- Mar 21, 2023
-
-
Nikita Popov authored
-
Nikita Popov authored
For equality comparisons, we don't need the gep to be inbounds: https://alive2.llvm.org/ce/z/Fe_kn2
-
Nicolas Vasilache authored
[mlir][Linalg][Transform] Fix effect on RewriteInDestinationPassingStyleOp that did not consume its operand
-
OCHyams authored
...rather than using DenseMaps to track per-variable information. Rather than tracking 3 maps of {VariableID: SomeInfo} per block, use a BitVector indexed by VariableID to mask 3 vectors of SomeInfo. BlockInfos now need to be initialised with a call to init which sets the BitVector width to the number of partially promoted variables in the function and fills the vectors with Top values. Prior to this patch, in joinBlockInfo, it was necessary to insert Top values into the Join result for variables in A XOR B after joining the variables in A AND B. Now, because the vectors are pre-filled with Top values we need only join the variables A AND B and set the BitVector of tracked variables to A OR B. The patch achieves an average of 0.25% reduction in instructions retired and a 1.1% max-rss for the CTMark suite in LTO-O3-g builds. Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D145558 -
OCHyams authored
Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D146232
-
David Spickett authored
Previously we only looked at the si_signo field, so you got: ``` (lldb) bt * thread #1, name = 'a.out.mte', stop reason = signal SIGSEGV * frame #0: 0x00000000004007f4 ``` This patch adds si_code so we can show: ``` (lldb) bt * thread #1, name = 'a.out.mte', stop reason = signal SIGSEGV: sync tag check fault * frame #0: 0x00000000004007f4 ``` The order of errno and code was incorrect in ElfLinuxSigInfo::Parse. It was the order that a "swapped" siginfo arch would use, which for Linux, is only MIPS. We removed MIPS Linux support some time ago. See: https://github.com/torvalds/linux/blob/fe15c26ee26efa11741a7b632e9f23b01aca4cc6/include/uapi/asm-generic/siginfo.h#L121 A test is added using memory tagging faults. Which were the original motivation for the changes. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D146045
-
Nikita Popov authored
Rather than handling all instruction types separately, clone the original instruction and replace the select operand.
-
Max Kazantsev authored
-
Valentin Clement authored
Correctly create the temporary for argument absent in the entry statement. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D146447
-
Ding Xiang Fei authored
MergeFuncs currently merges load instructions with differing semantically-relevant metadata, e.g. a load that has !nonnull with one that does not. Update FunctionComparator to make sure that metadata of both loads is the same. Alternatively, it would be possilbe to ignore the metadata during comparison, and then drop it during merging. Differential Revision: https://reviews.llvm.org/D144682
-
Ilyas Mustafazade authored
Differential Revision: https://reviews.llvm.org/D146382
-
Bing1 Yu authored
Reviewed By: skan Differential Revision: https://reviews.llvm.org/D146502
-
Nikita Popov authored
D138249 renamed a number of wasm intrinsics without implementing auto-upgrade support. Differential Revision: https://reviews.llvm.org/D146424
-
NAKAMURA Takumi authored
-
luxufan authored
Combine binary operator of two phi node if there is at least one specific constant value in phi0 and phi1's incoming values for each same incoming block and this specific constant value can be used to do optimization for specific binary operator. For example: ``` %phi0 = phi i32 [0, %bb0], [%i, %bb1] %phi1 = phi i32 [%j, %bb0], [0, %bb1] %add = add i32 %phi0, %phi1 ==> %add = phi i32 [%j, %bb0], [%i, %bb1] ``` Fixes: https://github.com/llvm/llvm-project/issues/61137 Differential Revision: https://reviews.llvm.org/D145223
-
NAKAMURA Takumi authored
Each emitter became self-contained since it has the registration of option. Differential Revision: https://reviews.llvm.org/D144351
-
NAKAMURA Takumi authored
Differential Revision: https://reviews.llvm.org/D144351
-
NAKAMURA Takumi authored
Differential Revision: https://reviews.llvm.org/D144351
-
NAKAMURA Takumi authored
`Opt(flag, func, desc)` registers an option into `Action`. `OptClass<EmitterC>` is also available if `EmitterC(RK).run(OS)` is capable. `Action` is defined as `ManagedStatic<cl::opt>` to guarantee to be created when each registration of emitter is invoked. `llvm::TableGenMain(argv0, MainFn)` invokes `Action` instead of `MainFn` Differential Revision: https://reviews.llvm.org/D144351
-
NAKAMURA Takumi authored
-
NAKAMURA Takumi authored
-
Kadir Cetinkaya authored
-
luxufan authored
-
Kadir Cetinkaya authored
This reverts commit fb3f6a95.
-
Luo, Yuanke authored
This patch is to support D145650 for elf target as well. Differential Revision: https://reviews.llvm.org/D146489
-
Ishaan Gandhi authored
This patch adds the AANonConvergent abstract attribute. It removes the convergent attribute from functions that only call non-convergent functions. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D143228
-
Craig Topper authored
Instead of having a separate single letter and multiletter ranking use a unified rank that assigns multiletter a larger value than single letter. Once we've ranked the extensions, then we compare using these ranks. Reviewed By: kito-cheng Differential Revision: https://reviews.llvm.org/D146273
-
Congcong Cai authored
-
Uday Bondhugula authored
Update affine analysis method `addInductionVarOrTerminalSymbol` for affine.parallel IV. Fixes https://github.com/llvm/llvm-project/issues/61371 Reviewed By: dcaballe Differential Revision: https://reviews.llvm.org/D146493
-
Congcong Cai authored
fixed: #59095 Update libcall signatures to use multivalue return rather than returning via a pointer when the multivalue features is enabled in the WebAssembly backend. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D146271
-
Ben Shi authored
The 'ELPM' instruction has three forms: -------------------------- | form | feature | | ----------- | -------- | | ELPM | hasELPM | | ELPM Rd, Z | hasELPMX | | ELPM Rd, Z+ | hasELPMX | -------------------------- The second form is always used in the expansion of the pseudo instruction 'ELPMBRdZ'. But for devices without ELPMX but only with ELPM, only the first form can be emitted. Reviewed By: jacquesguan Differential Revision: https://reviews.llvm.org/D141221
-
Lang Hames authored
-
Jie Fu authored
/Users/jiefu/llvm-project/llvm/tools/llvm-readobj/ELFDumper.cpp:7175:5: error: call to member function 'printNumber' is ambiguous W.printNumber("TotalBuckets", NBucket); ~~^~~~~~~~~~~ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:201:16: note: candidate function virtual void printNumber(StringRef Label, uint64_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:205:16: note: candidate function virtual void printNumber(StringRef Label, uint32_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:209:16: note: candidate function virtual void printNumber(StringRef Label, uint16_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:213:16: note: candidate function virtual void printNumber(StringRef Label, uint8_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:217:16: note: candidate function virtual void printNumber(StringRef Label, int64_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:221:16: note: candidate function virtual void printNumber(StringRef Label, int32_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:225:16: note: candidate function virtual void printNumber(StringRef Label, int16_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:229:16: note: candidate function virtual void printNumber(StringRef Label, int8_t Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:237:16: note: candidate function virtual void printNumber(StringRef Label, float Value) { ^ /Users/jiefu/llvm-project/llvm/include/llvm/Support/ScopedPrinter.h:241:16: note: candidate function virtual void printNumber(StringRef Label, double Value) { ^ -
Chuanqi Xu authored
According to the discussion in https://discourse.llvm.org/t/rfc-could-we-mark-coroutines-as-unreleased-now/69220 We should mark coroutines as "it’s supported fully everywhere but on Windows targets". Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D146187
-
Peter Collingbourne authored
Should fix Windows buildbot: https://lab.llvm.org/buildbot/#/builders/127/builds/45411
-
Michael Francis authored
when certain flags are specified, the Crt0 object files are not linked. However, the logic for determining which files will always run. This patch moves that logic so that the basename is only determined if it is needed. Differential Revision: https://reviews.llvm.org/D146443
-
Johannes Doerfert authored
If the stack is not accessible by other threads, e.g., on a GPU, we need to ensure heap-2-stack will not create a stack version of a pointer that might be passed to another thread. Since passing through memory is by default transparent, we need to register a callback and inspect stores we might look through explicitly.
-
Johannes Doerfert authored
We could be smarter about this, e.g., if the callee has a single call site, but for now we first avoid the miscompile.
-
Johannes Doerfert authored
This is a two part fix. First, we need two Execution Domains (ED) to track the values of a function. One for incoming values and one for outgoing values. This was conflated before. Second, at the function entry we need to look at the incoming information from call sites not iterate over non-existing predecessors.
-
Johannes Doerfert authored
Similar to loads, PHIs can be used to introduce non-dynamically unique values into the simplification "algorithm". We need to check that PHIs do not carry such a value from one iteration into the next as can cause downstream reasoning to fail, e.g., downstream could think a comparison is equal because the simplified values are equal while they are defined in different loop iterations. Similarly, instructions in cycles are now conservatively treated as non-dynamically unique. We could do better but I'll leave that for the future. The change in AAUnderlyingObjects allows us to ignore dynamically unique when we simply look for underlying objects. The user of that AA should be aware that the result might not be a dynamically unique value.
-