- May 30, 2021
-
-
Arthur O'Dwyer authored
Differential Revision: https://reviews.llvm.org/D102781
-
Arthur O'Dwyer authored
It looks to me as if *every* helper header needs to be added to the modulemap, actually; which is unfortunate since we keep proliferating them at such a rapid pace.
-
Fangrui Song authored
-
Arthur O'Dwyer authored
Drive-by minor improvements to a couple of uses of min_pointer. Differential Revision: https://reviews.llvm.org/D103366
-
David Green authored
If the operand of the WhileLoopStart is flagged as killed, that currently gets propogated to both the t2CMPri as the instruction is reverted, and the newly created t2DoLoopStart. Only the second should remain as killing the operand, the first dropping the flags.
-
Chris Lattner authored
This avoids trying to find the RegionKindInterface for every operation in the program, we only need it if they have regions. Differential Revision: https://reviews.llvm.org/D103367
-
Chris Lattner authored
Differential Revision: https://reviews.llvm.org/D103365
-
- May 29, 2021
-
-
mydeveloperday authored
{D74265} reduced the aggressiveness of line breaking following C# attributes, however this change removed any support for attributes on properties, causing significant ugliness to be introduced. This revision goes some way to addressing that by re-introducing the more aggressive check to `mustBreakBefore()`, but constraining it to the most common cases where we use properties which should not impact the "caller info attributes" or the "[In , Out]" decorations that are normally put on pinvoke It does not address my additional concerns of the original change regarding multiple C# attributes, as these are somewhat incorrectly handled by virtue of the fact its not recognising the second attribute as an attribute at all. But instead thinking its an array. The purpose of this revision is to get back to where we were for the most common of cases as a stepping stone to resolving this. However {D74265} has broken a lot of C# code and this revision will go someway alone to addressing the majority. Reviewed By: jbcoe, HazardyKnusperkeks, curdeius Differential Revision: https://reviews.llvm.org/D103307 -
Jessica Clarke authored
The replacement doesn't work for llc, but it is needed by patchable-function-entry.ll. This reverts commit aa9a30b8.
-
Jessica Clarke authored
On FreeBSD, absolute paths are passed unmodified in AT_EXECPATH, but relative paths are resolved to absolute paths, and any symlinks will be followed in the process. This means that the resource dir calculation will be wrong if Clang is invoked as an absolute path to a symlink, and this currently causes clang/test/Driver/rocm-detect.hip to fail on FreeBSD. Thus, make sure to call realpath on the result, just like is done on macOS. Whilst here, clean up the old fallback auxargs loop to use the actual type for auxargs rather than using lots of hacky casts that rely on addresses and pointers being the same (which is not the case on CHERI, and thus Arm's prototype Morello, although for little-endian systems it happens to work still as the word-sized integer will be padded to a full pointer, and it's someone academic given dereferencing past the end of environ will give a bounds fault, but CheriBSD is new enough that the elf_aux_info path will be used). This also makes the code easier to follow, and removes the confusing double-increment of p. Reviewed By: dim, arichardson Differential Revision: https://reviews.llvm.org/D103346
-
Jessica Clarke authored
Whilst here, also remove a couple of unnecessary -o - instances. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D103201
-
Sanjay Patel authored
This does not solve PR17101, but it is one of the underlying diffs noted here: https://bugs.llvm.org/show_bug.cgi?id=17101#c8 We could ease the one-use checks for the 'clear' (no 'not' op) half of the transform, but I do not know if that asymmetry would make things better or worse. Proofs: https://rise4fun.com/Alive/uVB Name: masked bit set %sh1 = shl i32 1, %y %and = and i32 %sh1, %x %cmp = icmp ne i32 %and, 0 %r = zext i1 %cmp to i32 => %s = lshr i32 %x, %y %r = and i32 %s, 1 Name: masked bit clear %sh1 = shl i32 1, %y %and = and i32 %sh1, %x %cmp = icmp eq i32 %and, 0 %r = zext i1 %cmp to i32 => %xn = xor i32 %x, -1 %s = lshr i32 %xn, %y %r = and i32 %s, 1 Note: this is a re-post of a patch that I committed at: rGa041c4ec The commit was reverted because it exposed another bug: rGb212eb71 But that has since been corrected with: rG8a156d1c ( D101191 ) Differential Revision: https://reviews.llvm.org/D72396
-
Sanjay Patel authored
-
Denys Petrov authored
Summary: Make StoreManager::castRegion function usage safier. Replace `const MemRegion *` with `Optional<const MemRegion *>`. Simplified one of related test cases due to suggestions in D101635. Differential Revision: https://reviews.llvm.org/D103319
-
Ulrich Weigand authored
The implementation of subword atomics does not actually guarantee the result is zero-extended, which now caused build bot failures after https://reviews.llvm.org/D101342 was landed.
-
LLVM GN Syncbot authored
-
Mark de Wever authored
This reverts commit 9968896c. This commit seems to cause the build failures of main.
-
Nikita Popov authored
Some of the code was already assuming that DT is non-null, so make that requirement more explicit and remove unnecessary null checks.
-
LemonBoy authored
Follow the same strategy used for atomic loads/stores by converting the operands to equally-sized integer types. This change prevents the atomic expansion pass from generating illegal LL/SC pairs when targeting AArch64: `expand-atomicrmw-xchg-fp.ll` would previously instantiate intrinsics such as `llvm.aarch64.ldaxr.p0f32` that cannot be lowered. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D103232
-
Fangrui Song authored
-
Fangrui Song authored
* Change linkage/visibility of __profn_ variables to match the reality * alwaysinline.ll: Add "EnableValueProfiling", otherwise it doesn't test available_externally alwaysinline. * Delete PR23499.ll - covered by other comdat tests.
-
Luke authored
Enable interleaved vectorization for RVV. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D101469
-
Nico Weber authored
.s files with `-g` generate __debug_aranges on darwin/arm64 for some reason, and those lead to `nullptr` symbols. Don't crash on that. Fixes PR50517. Differential Revision: https://reviews.llvm.org/D103350
-
Fangrui Song authored
I realized that we can use `comdat noduplicates` which is available on ELF. Add a special case for wasm which doesn't support the feature.
-
Amara Emerson authored
We have special handling for a zext of a load <32b because the load does a zext for free. In that case, we just select the G_ZEXT as if it were a copy but this triggered the copy checking code to balk at the mismatched size. This was being hidden because normally these get combined into G_ZEXTLOAD but for atomics this doesn't happen. The test case here just uses a normal load because the particular atomic isn't supported yet anyway.
-
Zhihao Yuan authored
This inheritance list style has been widely adopted by Symantec, a division of Broadcom Inc. It breaks after the commas that separate the base-specifiers: class Derived : public Base1, private Base2 { }; Differential Revision: https://reviews.llvm.org/D103204 -
Chris Lattner authored
The implementation had a couple of problems, including checking "isProperAncestor" in an inefficient way. It also recursed into other "isolated from above" ops. In the case of CIRCT, we get three levels of isolated ops: mlir::ModuleOp firrtl::CircuitOp firrtl::FModuleOp The verification for module would recurse into the circuits and fmodules checking them. The verifier hook for circuit would recurse into all the modules reverifying them, fmoduleop would then reverify them. The same happens for mlir::ModuleOp and Func. While here, fix an old design problem: IsolatedFromAbove checking was implemented by a method on the Region class, which isn't actually general and isn't used by anything else. Move it over to be a trait impl verifier method like the others and specialize it for its task. Differential Revision: https://reviews.llvm.org/D103345 -
Eli Friedman authored
This doesn't actually have any effect: we only call this code with SequentiallyConsistent orderings. But delete it anyway for consistency with other recent changes.
-
Fangrui Song authored
-
Nikita Popov authored
When fulling unrolling with a non-latch exit, the latch block is folded to unreachable. Replace this folding with the existing changeToUnreachable() helper, rather than performing it manually. This also moves the fold to happen after the manual DT update for exit blocks. I believe this is correct in that the conversion of an unconditional backedge into unreachable should not affect the DT at all. Differential Revision: https://reviews.llvm.org/D103340
-
Craig Topper authored
This is cleaner than slicing the MxList to remove elements from the beginning or end since that requires hardcoding the size. I don't expect the size of the list to change, but we shouldn't repeat it in multiple places.
-
Nikita Popov authored
This is to show that we currently only convert the terminator to unreachable, but don't clean up instructions before it (unless trivial DCE removes them). Also clean up excessive whitespace in this test.
-
Nikita Popov authored
This does some non-functional cleanup of exit folding during unrolling. The two main changes are: * First rewrite latch->header edges, which is unrelated to exit folding. * Combine folding for latch and non-latch exits. After the previous change, the only difference in their logic is that for non-latch exits we currently only fold "known non-exit" cases, but not "known exit" cases. I think this helps a lot to clarify this code and prepare it for future changes. Differential Revision: https://reviews.llvm.org/D103333
-
Craig Topper authored
-
Bardia Mahjour authored
-
Nico Weber authored
We now have llvm-otool :)
-
Marek Kurdej authored
Forgotten in commits fce8c10b, 9363aa90, 8d93d7ff.
-
Eli Friedman authored
If a cmpxchg specifies acquire or seq_cst on failure, make sure we generate code consistent with that ordering even if the success ordering is not acquire/seq_cst. At one point, it was ambiguous whether this sort of construct was valid, but the C++ standad and LLVM now accept arbitrary combinations of success/failure orderings. This doesn't address the corresponding issue in AtomicExpand. (This was reported as https://bugs.llvm.org/show_bug.cgi?id=33332 .) Fixes https://bugs.llvm.org/show_bug.cgi?id=50512. Differential Revision: https://reviews.llvm.org/D103284
-
Nico Weber authored
-
Arthur O'Dwyer authored
This should have been done in D96385; thanks ldionne for the catch! Also, make the back/front inserter behavior tests a little more thorough, which incidentally caught a cut-and-paste-bug in `nasty_list`, so fix that. Differential Revision: https://reviews.llvm.org/D103318
-