- Mar 10, 2020
-
-
Simon Pilgrim authored
For pre-AVX512 targets, combine binary shuffles to X86ISD::VPERM2X128 if possible. This mainly helps optimize the blend(extract_subvector(x,1),y) pattern. At some point soon we're going to have make a decision about when to combine AVX512 shuffles more aggressively - we bail out if there is any change in element size (to protect predicate mask merging) which means we miss out on a lot of optimizations.
-
Adam Balogh authored
Lambdas creating path notes using NoteTags still take BugReport as their parameter. Since path notes obviously only appear in PathSensitiveBugReports it is straightforward that lambdas of NoteTags take PathSensitiveBugReport as their parameter. Differential Revision: https://reviews.llvm.org/D75898
-
Clement Courbet authored
-
Florian Hahn authored
-
Sam Parker authored
Iterate through the loop and check that the observable values produced are the same whether tail predication happens or not. We want to find out if the tail-predicated version of this loop will produce the same values as the loop in its original form. For this to be true, the newly inserted implicit predication must not change the the (observable) results. We're doing this because many instructions in the loop will not be predicated and so the conversion from VPT predication to tail predication can result in different values being produced, because of falsely predicated lanes not being updated in the converted form. A masked load, whether through VPT or tail predication, will write zeros to any of the falsely predicated bytes. So, from the loads, we know that the false lanes are zeroed and here we're trying to track that those false lanes remain zero, or where they change, the differences are masked away by their user(s). All MVE loads and stores have to be predicated, so we know that any load operands, or stored results are equivalent already. Other explicitly predicated instructions will perform the same operation in the original loop and the tail-predicated form too. Because of this, we can insert loads, stores and other predicated instructions into our KnownFalseZeros set and build from there. Differential Revision: https://reviews.llvm.org/D75452
-
Jonathan Coe authored
Restores content of commit cb3f20d2 reverted in commit 5a101f37 with a corrected commit message. Summary: Do not use continuation indent for '[' in blocks in C# code. Reviewers: krasimir Reviewed By: krasimir Subscribers: cfe-commits Tags: #clang-format, #clang Differential Revision: https://reviews.llvm.org/D75747
-
Jonathan Coe authored
Commit message says "C++" where it should say "C#". This reverts commit cb3f20d2.
-
Djordje Todorovic authored
Differential Revision: https://reviews.llvm.org/D73534
-
Dmitry Vyukov authored
Note that in C++ the static keyword is implicit for const objects. In C however it is not, and we get clashes at link time after including the header from more than one C file: lib.a(bar.o):(.rodata+0x0): multiple definition of `__tsan_mutex_linker_init' lib.a(foo.o):(.rodata+0x0): first defined here lib.a(bar.o):(.rodata+0xc): multiple definition of `__tsan_mutex_not_static' lib.a(foo.o):(.rodata+0xc): first defined here <snip> Indeed both foo.o and bar.o define the clashing symbols: $ nm foo.o <snip> 0000000000000000 R __tsan_mutex_linker_init 000000000000000c R __tsan_mutex_not_static <snip> Fix it by explicitly making the constants static. Reviewed-in: https://reviews.llvm.org/D75820 Author: cota (Emilio G. Cota)
-
Craig Topper authored
[X86] Remove isel patterns for (X86VBroadcast (i16 (trunc (i32 (load))))). Replace with a DAG combine to form VBROADCAST_LOAD. isTypeDesirableForOp prevents loads from being shrunk to i16 by DAG combine. Because of this we can't just match the broadcast and a scalar load. So look for broadcast+truncate+load and form a vbroadcast_load during DAG combine. This replaces what was previously done as an isel pattern and I think fixes it so we won't change the size of a volatile load. But my main motivation is just to clean up our isel patterns.
-
Puyan Lotfi authored
When hashing on MachineOperand::MO_ConstantPoolIndex, now MIR-Canon and MIRVRegNamer will no longer result in a hash collision. Differential Revision: https://reviews.llvm.org/D74449
-
Siva Chandra Reddy authored
These functions only support locking and unlocking of plain mutexes. They will be extended in future changes to handled recursive and timed mutexes. Reviewers: phosek Differential Revision: https://reviews.llvm.org/D74653
-
Siva Chandra Reddy authored
The following are the differences from the first version: 1. The kernel does not copy the stack for the new thread (it cannot). The previous version missed this fact. In this new version, the new thread's start args are copied on to the new stack in a known location so that the new thread can sniff them out. 2. A start args sniffer for x86_64 has been added. 2. Default stack size has been increased to 64KB. Reviewers: abrachet, phosek Differential Revision: https://reviews.llvm.org/D75818
-
Mehdi Amini authored
The GPUToCUDA conversion needs to conditionally link it in.
-
Matt Arsenault authored
When expanding scalar packed operations, we should not introduce illegal vector casts LegalizerHelper introduces. We're not in a legalizer context, and there's no RegBankSelect apply or legalize worklist.
-
Matt Arsenault authored
We weren't considering the packed case correctly, and this was passing through to the selector. The selector only checked the size, so this would incorrectly compile to a single 32-bit scalar add. As usual, the LegalizerHelper is somewhat awkward to use from applyMappingImpl. I think this is the first place we've needed multi-step legalization here though.
-
Lang Hames authored
Summary: Mixing stackmaps and DWARF in a single file triggers an assertion in MCMachOStreamer as stackmap sections are emitted in AsmPrinter::emitEndOfAsmFile after the DWARF sections have already been emitted. Since it should be safe to emit stackmap sections after DWARF sections this patch relaxes the assertion to allow that. Reviewers: aprantl, dblaikie, echristo Subscribers: hiraditya, ributzka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75836
-
Uday Bondhugula authored
Summary: - these are unused and really not needed now given flat affine constraints Differential Revision: https://reviews.llvm.org/D75792
-
Nathan James authored
-
Wouter van Oortmerssen authored
Summary: Fixes: https://bugs.llvm.org/show_bug.cgi?id=44920 WebAssemblyRegColoring may merge the vreg that currently represents the FrameBase with one representing an argument. WebAssemblyExplicitLocals picks up the corresponding local when a vreg is first added to the Reg2Local mapping, except when it is an argument instruction which are handled separately. Note that this does not change that vregs representing the FrameBase may get merged, it is not clear to me that this may have other effects we may want to avoid? Reviewers: dschuff Reviewed By: dschuff Subscribers: azakai, sbc100, hiraditya, aheejin, sunfish, llvm-commits, jgravelle-google Tags: #llvm Differential Revision: https://reviews.llvm.org/D75718
-
Nathan James authored
Reviewers: aaron.ballman Reviewed By: aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75841
-
George Burgess IV authored
Patch by Zola Bridges! From the review: """ I moved these functions to X86InstrInfo.cpp, so they are available from another pass. In addition, this is a step toward resolving the FIXME to move this metadata to the instruction tables. This is the final step to make these two data invariance checks available for non-SLH passes. The other two steps were here: - https://reviews.llvm.org/D70283 - https://reviews.llvm.org/D75650 Tested via llvm-lit llvm/test/CodeGen/X86/speculative-load-hardening* """ Differential Revision: https://reviews.llvm.org/D75654
-
George Burgess IV authored
Patch by Zola Bridges! From the review: """ In this changeset (https://reviews.llvm.org/D70283), I added a liveness check everywhere the isDataInvariant* functions were used, so that I could safely delete the checks within the function. I mistakenly left that deletion out of the patch. The result is that the same condition is checked twice for some instructions which is functionally fine, but not good. This change deletes the redundant check that I intended to delete in the last change. This is the second of three patches that will make the data invariance checks available for non-SLH passes and enable the FIXMEs related to moving this metadata to the instruction tables to be resolved. Tested via llvm-lit llvm/test/CodeGen/X86/speculative-load-hardening* """ Differential Revision: https://reviews.llvm.org/D75650
-
Richard Smith authored
This reverts commit 2669e41b, which was pushed by mistake.
-
Richard Smith authored
A recent change to MemorySSA caused LLVM to start optimizing the call to 'f(x)' into just 'x', despite the 'noinline' attribute. So try harder to prevent this optimization from firing.
-
Richard Smith authored
dependent constructs. We previously assumed they were neither value- nor instantiation-dependent under any circumstances, which would lead to crashes and other misbehavior. This doesn't match GCC's behavior (where statement expressions appear to be treated as value-dependent if they appear in a dependent context), but seems to be the best thing we can do in the short term: it turns out to be remarkably difficult for us to correctly determine whether we are in a dependent context (and it's not even possible in some cases, such as in a generic lambda where we might not have seen the 'auto' yet). This was previously reverted in 8e4a8677 for rejecting some code, but that code was invalid and Clang was previously incorrectly accepting it.
-
Matt Morehouse authored
It looks like the recent -fno-common is making it pass now.
-
River Riddle authored
[mlir][SideEffects] Replace the old SideEffects dialect interface with the newly added op interfaces/traits. Summary: The old interface was a temporary stopgap to allow for implementing simple LICM that took side effects of region operations into account. Now that MLIR has proper support for specifying memory effects, this interface can be deleted. Differential Revision: https://reviews.llvm.org/D74441
-
George Burgess IV authored
Patch by Zhizhou Yang! In his own words: """ Similar change to CMakeLists as r372312. After r372209, compiler command line may include argument with quotes: ``` -fprofile-instr-use="/foo/bar.profdata" ``` And it causes a hidden failure with execute_process later: Could not read profile "/foo/bar.profdata": No such file or directory. In this particular case, the check for .init_array will fail silently and creates a PGO-ed binary with bad .init_array section in compiler-rt. Bug details can be found in PR45022 """ Differential Revision: https://reviews.llvm.org/D75065
-
George Burgess IV authored
Patch by Zhizhou Yang! In his own words: """ Currently compiler-rt doesn't officially support either PGO instrumentation or use PGO profdata to build it. PGO related flags are passed into compiler-rt since rL372209, and causing bugs: 45022, crbug:1018840 This patch adds several checks in compiler-rt to disable PGO related flags and provides a flag to turn on PGO for compiler-rt if needed. """ Differential Revision: https://reviews.llvm.org/D75499
-
Jonathan Roelofs authored
-
Douglas Yung authored
Change tests to use -S instead of -c to work when an external assembler is used that is not present. NFCI. Reviewed By: NoQ Subscribers: Charusso, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D74104
-
Erik Pilkington authored
Nobody needs these symbols, so there isn't any benefit in including them. This saves some code-size in Objective-C binaries. Partially reverts: https://reviews.llvm.org/D61454. rdar://56579760 Differential revision: https://reviews.llvm.org/D75491
-
Davide Italiano authored
-
Davide Italiano authored
-
Davide Italiano authored
-
Philip Reames authored
-
Jonathan Roelofs authored
-
Reid Kleckner authored
I noticed my links were a bit slower on Windows than usual. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D75774
-
Jonathan Roelofs authored
-