- Mar 14, 2021
-
-
Arnamoy Bhattacharyya authored
[flang][OpenMP] Add support for getting parent context and clauses and modify the relevant sema checks to use the new functions. Differential Revision: https://reviews.llvm.org/D98580
-
Jez Ng authored
They were previously in SyntheticSections.h, but now there are a bunch of non-synthetic section names in the list. Also renamed `__functionStarts` to `__func_starts` for uniformity with other section names + keeps the name under 16 characters (in case we ever want to write it out as a real section). Reviewed By: #lld-macho, compnerd Differential Revision: https://reviews.llvm.org/D98586
-
Simonas Kazlauskas authored
Adds a test for D98588 and updates the test checks.
-
Nikita Popov authored
-
Martin Storsjö authored
Previously, that configuration only used the generic sources, in addition to the couple specifically chosen arm/mingw files. Differential Revision: https://reviews.llvm.org/D98547
-
Nikita Popov authored
This fixes a regression from the MemDep-based implementation: MemDep completely ignores lifetime.start intrinsics that aren't MustAlias -- this is probably unsound, but it does mean that the MemDep based implementation successfully eliminated memcpy's from lifetime.start if the memcpy happens at an offset, rather than the base address of the alloca. Add a special case for the case where the lifetime.start spans the whole alloca (which is pretty much the only kind of lifetime.start that frontends ever emit), as we don't need to figure out our exact aliasing relationship in that case, the whole alloca is dead prior to the call. If this doesn't cover all practically relevant cases, then it would be possible to make use of the recently added PartialAlias clobber offsets to make this more precise.
-
Nikita Popov authored
-
Craig Topper authored
A 1-bit smulo overflows is both inputs are -1 since the result should be +1 which can't be represented in a signed 1 bit value. We can detect this with an AND and a setcc. The multiply result can also use the same AND. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D97634
-
- Mar 13, 2021
-
-
Stefan Gränitz authored
-
kuterd authored
Remove the check that is causing compilation issues in some build configurations.
-
Sanjay Patel authored
The structure of this fold is suspect vs. most of instcombine because it creates instructions and tries to delete them immediately after. If we don't have the operand types for the icmps, then we are not behaving as assumed. And as shown in PR49475, we can inf-loop.
-
Roman Lebedev authored
This reverts commit 329aeb5d, and relands commit 61f006ac. This is a continuation of D89456. As it was suggested there, now that SCEV models `PtrToInt`, we can try to improve SCEV's pointer handling. In particular, i believe, i will need this in the future to further fix `SCEVAddExpr`operation type handling. This removes special handling of `ConstantPointerNull` from `ScalarEvolution::createSCEV()`, and add constant folding into `ScalarEvolution::getPtrToIntExpr()`. This way, `null` constants stay as such in SCEV's, but gracefully become zero integers when asked. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D98147
-
Roman Lebedev authored
The added test case crashes before this fix: ``` opt: /repositories/llvm-project/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:5172: BasicBlock::iterator (anonymous namespace)::LSRInstance::AdjustInsertPositionForExpand(BasicBlock::iterator, const (anonymous namespace)::LSRFixup &, const (anonymous namespace)::LSRUse &, llvm::SCEVExpander &) const: Assertion `!isa<PHINode>(LowestIP) && !LowestIP->isEHPad() && !isa<DbgInfoIntrinsic>(LowestIP) && "Insertion point must be a normal instruction"' failed. ``` This is fully analogous to the previous commit, with the pointer constant replaced to be something non-null. The comparison here can be strength-reduced, but the second operand of the comparison happens to be identical to the constant pointer in the `catch` case of `landingpad`. While LSRInstance::CollectLoopInvariantFixupsAndFormulae() already gave up on uses in blocks ending up with EH pads, it didn't consider this case. Eventually, `LSRInstance::AdjustInsertPositionForExpand()` will be called, but the original insertion point it will get is the user instruction itself, and it doesn't want to deal with EH pads, and asserts as much. It would seem that this basically never happens in-the-wild, otherwise it would have been reported already, so it seems safe to take the cautious approach, and just not deal with such users.
-
https://reviews.llvm.org/D98147#2623549Roman Lebedev authored
With that patch, this test fails with an assertion ``` opt: /repositories/llvm-project/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:5169: BasicBlock::iterator (anonymous namespace)::LSRInstance::AdjustInsertPositionForExpand(BasicBlock::iterator, const (anonymous namespace)::LSRFixup &, const (anonymous namespace)::LSRUse &, llvm::SCEVExpander &) const: Assertion `!isa<PHINode>(LowestIP) && !LowestIP->isEHPad() && !isa<DbgInfoIntrinsic>(LowestIP) && "Insertion point must be a normal instruction"' failed. ```
-
George Rokos authored
This patch adds the infrastructure for allocator support for target memory. Three allocators are introduced for device, host and shared memory. The corresponding API functions have the llvm_ prefix temporarily, until they become part of the OpenMP standard. Differential Revision: https://reviews.llvm.org/D97883
-
Nikita Popov authored
Rather than checking for simple equality, check for MustAlias, as we do in other transforms. This catches equivalent GEPs.
-
Nikita Popov authored
If a memset destination is overwritten by a memcpy and the sizes are exactly the same, then the memset is simply dead. We can directly drop it, instead of replacing it with a memset of zero size, which is particularly ugly for the case of a dynamic size.
-
Nikita Popov authored
-
Nikita Popov authored
When calling getClobberingMemoryAccess() with MemoryLocation on a MemoryPHI starting access, the walker currently immediately bails and returns the starting access. This makes sense for the API that does not accept a location (as we wouldn't know what clobber we should be checking for), but doesn't make sense for the MemoryLocation-based API. This means that it can't look through a MemoryPHI if it's the starting access, but can if there is one more non-clobbering def in between. This patch removes the limitation. Differential Revision: https://reviews.llvm.org/D98557
-
luxufan authored
This patch change the rvv frame layout that proposed in D94465. In patch D94465, In the eliminateFrameIndex function, to eliminate the rvv frame index, create temp virtual register is needed. This virtual register should be scavenged by class RegsiterScavenger. If the machine function has other unused registers, there is no problem. But if there isn't unused registers, we need a emergency spill slot. Because of the emergency spill slot belongs to the scalar local variables field, to access emergency spill slot, we need a temp virtual register again. This makes the compiler report the "Incomplete scavenging after 2nd pass" error. So I change the rvv frame layout as follows: ``` |--------------------------------------| | arguments passed on the stack | |--------------------------------------|<--- fp | callee saved registers | |--------------------------------------| | rvv vector objects(local variables | | and outgoing arguments | |--------------------------------------| | realignment field | |--------------------------------------| | scalar local variable(also contains| | emergency spill slot) | |--------------------------------------|<--- bp | variable-sized local variables | |--------------------------------------|<--- sp ``` Differential Revision: https://reviews.llvm.org/D97111
-
luxufan authored
Differential Revision: https://reviews.llvm.org/D97177
-
Roman Lebedev authored
This appears to have broken ubsan bot: https://lab.llvm.org/buildbot/#/builders/85/builds/3062 https://reviews.llvm.org/D98147#2623549 It looks like LSR needs some kind of a change around insertion point handling. Reverting until i have a fix. This reverts commit 61f006ac.
-
George Balatsouras authored
Remove hard-coded shadow width references. Reviewed By: stephan.yichao.zhao Differential Revision: https://reviews.llvm.org/D98454
-
xling-Liao authored
In order to prevent further building issues related to the usage of SmallVector in other compilation unit, this patch adjusts the llvm.h header as a workaround instead. Besides, this patch reverts previous workarounds: 1. Revert "[NFC] Use llvm::SmallVector to workaround XL compiler problem on AIX" This reverts commit 561fb7f6. 2.Revert "[clang][cli] Fix build failure in CompilerInvocation" This reverts commit 8dc70bdc. Differential Revision: https://reviews.llvm.org/D98552
-
Lang Hames authored
-
Lang Hames authored
This makes the target triple, graph name, and full graph content available when making decisions about how to populate the linker pass pipeline. Also updates the LLJITWithObjectLinkingLayerPlugin example to show more API use, including use of the API changes in this patch.
-
Petr Hosek authored
This is necessary so we can run Polly tests in 2 stage build. Differential Revision: https://reviews.llvm.org/D98572
-
peter klausler authored
An older version of a function (Fortran::semantics::FindFunctionResult) was left in flang/lib/Semantics/tools.cpp, and this breaks the static library build due to a conflict with the intended final version in another file and library. Remove the old code. Differential Revision: https://reviews.llvm.org/D98568
-
Giorgis Georgakoudis authored
The patch adds an argument to update test scripts, such as update_cc_test_checks, for replacing a function name matching a regex. This functionality is needed to match generated function signatures that include file hashes. Example: The function signature for the following function: `__omp_offloading_50_b84c41e__Z9ftemplateIiET_i_l30_worker` with `--replace-function-regex "__omp_offloading_[0-9]+_[a-z0-9]+_(.*)"` will become: `CHECK-LABEL: @{{__omp_offloading_[0-9]+_[a-z0-9]+__Z9ftemplateIiET_i_l30_worker}}(` Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D97107 -
Jason Molenda authored
One of the backup schemes I use for finding kexts and kernels on the local filesystem is to load a solitary binary when I don't find any with a dSYM. This usually is a more confusing behavior than helpful; people expect to get no binary loaded, or a binary with debug information. This change stops loading kexts and kernels that do not have an associated dSYM. rdar://74291888
-
Giorgis Georgakoudis authored
This reverts commit 5eaf70af.
-
Giorgis Georgakoudis authored
The patch adds an argument to update test scripts, such as update_cc_test_checks, for replacing a function name matching a regex. This functionality is needed to match generated function signatures that include file hashes. Example: The function signature for the following function: `__omp_offloading_50_b84c41e__Z9ftemplateIiET_i_l30_worker` with `--replace-function-regex "__omp_offloading_[0-9]+_[a-z0-9]+_(.*)"` will become: `CHECK-LABEL: @{{__omp_offloading_[0-9]+_[a-z0-9]+__Z9ftemplateIiET_i_l30_worker}}(` Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D97107 -
Aart Bik authored
This is a temporary work-around to get our all-annotations-all-flags stress testing effort run clean. In the long run, we want to provide efficient implementations of strided loads and stores though Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D98563
-
Matheus Izvekov authored
See PR48593. Constraints with invalid type parameters were causing a null pointer dereference. Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D98095
-
Matheus Izvekov authored
This patch just makes the error message clearer by reinforcing the cause was a lack of viable **three-way** comparison function for the **complete object**. Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D97990
-
peter klausler authored
Fortran permits a reference to a function whose result is a pointer to be used as a definable variable in any context where a designator could appear. This patch wrings out remaining bugs with such usage and adds more testing. The utility predicate IsProcedurePointer(expr) had a misleading name which has been corrected to IsProcedurePointerTarget(expr). Differential Revision: https://reviews.llvm.org/D98555
-
Jez Ng authored
Summary: The exact out-of-range value seems to differ by 8 bytes on the buildbots compared to my local machine. I'm guessing it has something to do with what inputs we are getting from llvm-mc. Not sure why, but I don't think it's super important -- let's just ignore the number, the out-of-range message is the important thing here
-
peter klausler authored
Make error message descriptors on runtime DE/ALLOCATE API calls constant. Fix a bug in error message truncation/padding. Differential Revision: https://reviews.llvm.org/D98551
-
Fangrui Song authored
-
Fangrui Song authored
-