- May 13, 2020
-
-
Shengchen Kan authored
Fix the signed/unsigned mismatch issue
-
Qiu Chaofan authored
xsnegdp, xsabsdp and xsnabsdp can be used to operate on f32 operand. This patch adds the missing patterns since we prefer VSX instructions when available. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D75344
-
Sam Parker authored
Fix the assumption that all bitcasts of the same type sizes are free. We now only assume that bitcasts between ints and ptrs of the same size are free. This allows TTImpl to just call the concrete implementation of getCastInstrCost. Differential Revision: https://reviews.llvm.org/D78918
-
MaheshRavishankar authored
Differential Revision: https://reviews.llvm.org/D79505
-
Qiu Chaofan authored
Legalizer should respect both command-line options or SDNode-level fast-math flags. Also, this patch propagates other flags during custom simplifying. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D79074
-
MaheshRavishankar authored
linalg.reshape/linalg.tensor_reshape operations. Differential Revision: https://reviews.llvm.org/D79765
-
MaheshRavishankar authored
This is only valid if the source tensors (result tensor) is static shaped with all unit-extents when the reshape is collapsing (expanding) dimensions. Differential Revision: https://reviews.llvm.org/D79764
-
Kang Zhang authored
Summary: The ppc-early-ret pass use the addReg() to add operand to the new instruction, it can't reserve the flag of old operand. This has caused machine verfications failed. This patch use add() to instead of addReg(). Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D77997
-
Stephen Neuendorffer authored
We need to avoid declaring dependencies on strings which are valid LINK_LIBS and not valid targets. Previously, we used if(TARGET) to check this condition. However, if(TARGET) checks whether a target has been created (in the cmake subdirectory traversal order) and not whether it *will* be created. This results in annoying directory ordering problems. This patch changes the check to more explicitly eliminate problematic libraries (namely -lpthread) using a REGEX. Differential Revision: https://reviews.llvm.org/D79837
-
KAWASHIMA Takahiro authored
Fixes PR45673 The commit 9180c14f (D76206) resolved only a part of the problem of concurrent .gcda file creation. It ensured that only one process creates the file but did not ensure that the process locks the file first. If not, the process which created the file may clobber the contents written by a process which locked the file first. This is the cause of PR45673. This commit prevents the clobbering by revising the assumption that a process which creates the file locks the file first. Regardless of file creation, a process which locked the file first uses fwrite (new_file==1) and other processes use mmap (new_file==0). I also tried to keep the creation/first-lock process same by using mkstemp/link/unlink but the code gets long. This commit is more simple. Note: You may be confused with other changes which try to resolve concurrent file access. My understanding is (may not be correct): D76206: Resolve race of .gcda file creation (but not lock) This one: Resolve race of .gcda file creation and lock D54599: Same as D76206 but abandoned? D70910: Resolve race of multi-threaded counter flushing D74953: Resolve counter sharing between parent/children processes D78477: Revision of D74953 Differential Revision: https://reviews.llvm.org/D79556
-
KAWASHIMA Takahiro authored
Fixes PR41696 The loop-reroll pass generates an invalid IR (or its assertion fails in debug build) if values of the base instruction and other root instructions (terms used in the loop-reroll pass) are used outside the loop block. See IRs written in PR41696 as examples. The current implementation of the loop-reroll pass can reroll only loops that don't have values that are used outside the loop, except reduced values (the last values of reduction chains). This is described in the comment of the `LoopReroll::reroll` function. https://github.com/llvm/llvm-project/blob/llvmorg-10.0.0/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp#L1600 This is checked in the `LoopReroll::DAGRootTracker::validate` function. https://github.com/llvm/llvm-project/blob/llvmorg-10.0.0/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp#L1393 However, the base instruction and other root instructions skip this check in the validation loop. https://github.com/llvm/llvm-project/blob/llvmorg-10.0.0/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp#L1229 Moving the check in front of the skip is the logically simplest fix. However, inserting the check in an earlier stage is better in terms of compilation time of unrerollable loops. This fix inserts the check for the base instruction into the function to validate possible base/root instructions. Check for other root instructions is unnecessary because they don't match any base instructions if they have uses outside the loop. Differential Revision: https://reviews.llvm.org/D79549
-
Muhammad Omair Javaid authored
Fix a typo in earlier xfailed assert.test replace // with #.
-
Muhammad Omair Javaid authored
This patch marks following tests as xfail for arm-linux target. lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py lldb/test/API/python_api/thread/TestThreadAPI.py lldb/test/Shell/Recognizer/assert.test Bugs have been filed for all of them for the corresponding failing component.
-
aartbik authored
Summary: Makes this operation runnable on CPU by generating MLIR instructions that are eventually folded into an LLVM IR constant for the mask. Reviewers: nicolasvasilache, ftynse, reidtatge, bkramer, andydavis1 Reviewed By: nicolasvasilache, ftynse, andydavis1 Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79815
-
Muhammad Omair Javaid authored
This patch fixes minidebuginfo-set-and-hit-breakpoint.test for arm-linux targets. 32-bit elf executables use .rel.dyn and 64-bit uses .rela.dyn for relocation entries for dynamic symbols.
-
Johannes Doerfert authored
For AAReturnedValues we treated new and existing information differently in the updateImpl. Only the latter was properly analyzed and categorized. The former was thought to be analyzed in the subsequent update. Since the Attributor does not support "self-updates" we need to make sure the state is "stable" after each updateImpl invocation. That is, if the surrounding information does not change, the state is valid. Now we make sure all return values have been handled and properly categorized each iteration. We might not update again if we have not requested a non-fix attribute so we cannot "wait" for the next update to analyze a new return value. Bug reported by @sdmitriev.
-
zoecarver authored
This patch fixes LWG issue 2574. Differential Review: https://reviews.llvm.org/D62928
-
Zequan Wu authored
-
Juneyoung Lee authored
Summary: This fixes PR45885 by fixing isGuaranteedNotToBeUndefOrPoison so it does not look into dominating branch conditions of V when V is an instruction in an unreachable block. Reviewers: spatel, nikic, lebedev.ri Reviewed By: nikic Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79790
-
Muhammad Omair Javaid authored
Summary: This patch fixes an error happening in TestNumThreads.py when it encounters frame.GetFunctionName none for address only locations in stripped libc. This error was showing up on arm-linux docker container running lldb buildbot. Reviewers: labath Reviewed By: labath Subscribers: kristof.beyls, lldb-commits Differential Revision: https://reviews.llvm.org/D79777
-
Nicolas Vasilache authored
The main objective of this revision is to change the way static information is represented, propagated and canonicalized in the SubViewOp. In the current implementation the issue is that canonicalization may strictly lose information because static offsets are combined in irrecoverable ways into the result type, in order to fit the strided memref representation. The core semantics of the op do not change but the parser and printer do: the op always requires `rank` offsets, sizes and strides. These quantities can now be either SSA values or static integer attributes. The result type is automatically deduced from the static information and more powerful canonicalizations (as powerful as the representation with sentinel `?` values allows). Previously static information was inferred on a best-effort basis from looking at the source and destination type. Relevant tests are rewritten to use the idiomatic `offset: x, strides : [...]`-form. Bugs are corrected along the way that were not trivially visible in flattened strided memref form. Lowering to LLVM is updated, simplified and now supports all cases. A mixed static-dynamic mode test that wouldn't previously lower is added. It is an open question, and a longer discussion, whether a better result type representation would be a nicer alternative. For now, the subview op carries the required semantic. Differential Revision: https://reviews.llvm.org/D79662
-
Zequan Wu authored
We want to add a way to avoid merging identical calls so as to keep the separate debug-information for those calls. There is also an asan usecase where having this attribute would be beneficial to avoid alternative work-arounds. Here is the link to the feature request: https://bugs.llvm.org/show_bug.cgi?id=42783. `nomerge` is different from `noline`. `noinline` prevents function from inlining at callsites, but `nomerge` prevents multiple identical calls from being merged into one. This patch adds `nomerge` to disable the optimization in IR level. A followup patch will be needed to let backend understands `nomerge` and avoid tail merge at backend. Reviewed By: asbirlea, rnk Differential Revision: https://reviews.llvm.org/D78659
-
Nico Weber authored
clang passes these flags; this makes it easier to try `clang -v` output with `ld -flavor darwinnew`. Differential Revision: https://reviews.llvm.org/D79797
-
Siva Chandra Reddy authored
A missing dep has been added, and a few redundent deps have been removed.
-
Casey Carter authored
These tests PASS on libstdc++ and MSVC.
-
Stanislav Mekhanoshin authored
We can produce such vectors in the Promote Alloca pass, but we are unable to use movrel to operate it and lower via scratch. Making it legal makes SI_INDIRECT patterns work. There is more work to do in subsequent changes: 1. We initialize m0 twice to access each dword. It shall be possible to only do it once and increment base register number instead. 2. We also need v16i64/v16f64 but these first need to be added to tablegen. Differential Revision: https://reviews.llvm.org/D79808
-
Jonas Devlieghere authored
Now that the FileCollector knows how to deal with directories we no longer have to ignore them in the FileSystem class.
-
Sean Silva authored
Summary: - Mark it NoSideEffect - Add custom parser/printer This reverts the temporary revert in https://reviews.llvm.org/rG84a9c725742d26df04808a3c7349dbd98684c6cb That was a false alarm. A downstream test actually needed to be updated.
-
Jan Korous authored
Differential Revision: https://reviews.llvm.org/D79809
-
Sanjay Patel authored
SDAG suffers when it can't see that a funnel operand is a splat value (due to single-basic-block visibility), so invert the normal loop hoisting rules to move a splat op closer to its use. This would be part 1 of an enhancement similar to D63233. This is needed to re-fix PR37426: https://bugs.llvm.org/show_bug.cgi?id=37426 ...because we got better at canonicalizing IR to funnel shift intrinsics. The existing CGP code for shift opcodes is likely overstepping what it was intended to do, so that will be fixed in a follow-up. Differential Revision: https://reviews.llvm.org/D79718
-
Davide Italiano authored
This only covers ANYEXT/ZEXT. SEXT is covered in another test I just checked in.
-
Alex Zinenko authored
Conversion/ folders were originally intended to store patterns for DialectA->DialectB conversions that depend on both dialects and do not conceptually belong to either of the dialects. As such, DialectA->DialectA conversion does not make sense under Conversion/ and should rather live with the dialect it operates on. Differential Revision: https://reviews.llvm.org/D79569
-
Davide Italiano authored
<rdar://problem/62991635>
-
Alexey Lapshin authored
-
Justin Hibbits authored
Summary: The SPE doesn't have a 'fma' instruction, so the intrinsic becomes a libcall. It really should become an expansion to two instructions, but for some reason the compiler doesn't think that's as optimal as a branch. Since this lowering is done after CTR is allocated for loops, tell the optimizer that CTR may be used in this case. This prevents a "Invalid PPC CTR loop!" assertion in the case that a fma() function call is used in a C/C++ file, and clang converts it into an intrinsic. Reviewed By: shchenz Differential Revision: https://reviews.llvm.org/D78668
-
Alexey Lapshin authored
-
Wei Mi authored
The internal flag -partial-profile in llvm conflicts with the flag with the same name in llvm-profdata. The conflict happens in builds with LLVM_LINK_LLVM_DYLIB enabled. In this case the tools are linked with libLLVM and we end up with two definitions for the same cl::opt. The patch renames llvm-profdata flag -partial-profile to -gen-partial-profile.
-
- May 12, 2020
-
-
Jonas Devlieghere authored
This scenario generates another broken YAML mapping as illustrated below. { 'type': 'directory', 'name': "c", 'contents': [ , { 'type': 'directory', 'name': "d", 'contents': [ , { 'type': 'directory', 'name': "e", 'contents': [ { 'type': 'file', 'name': "f", 'external-contents': "//root/a/c/d/e/f" } { 'type': 'file', 'name': "g", 'external-contents': "//root/a/c/d/e/g" } ] } ] } ] },
-
Jonas Devlieghere authored
This scenario generates a broken YAML mapping as illustrated below. { 'type': 'directory', 'name': "c", 'contents': [ { 'type': 'file', 'name': "d", 'external-contents': "//root/a/c/d" } { 'type': 'file', 'name': "e", 'external-contents': "//root/a/c/e" } { 'type': 'file', 'name': "f", 'external-contents': "//root/a/c/f" } ] },
-
Alexey Lapshin authored
Summary: This patch refactors handling of VarArgs in X86TargetLowering::LowerFormalArguments. That refactoring was requested while reviewing D69372. Code related to varargs handling is removed from X86TargetLowering::LowerFormalArguments and is divided into smaller routines. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D74794
-