- Mar 21, 2023
-
-
Job Noorman authored
Sometimes, symbols are present that point to the end of a section (i.e., one-past the highest valid address). Currently, BOLT either rejects those symbols when they don't point to another existing section, or errs when they do and the other section is not executable. I suppose BOLT would accept the symbol when it points to an executable section. In any case, these symbols should not be considered while discovering functions and should not result in an error. This patch implements that. Note that this patch checks explicitly for symbols whose value equals the end of their section. It might make more sense to verify that the symbol's value is within [section start, section end). However, I'm not sure if this could every happen *and* its value does not equal the end. Another way to implement this is to verify that the BinarySection we find at the symbol's address actually corresponds to the symbol's section. I'm not sure what the best approach is so feedback is welcome. Reviewed By: yota9, rafauler Differential Revision: https://reviews.llvm.org/D146215
-
Nikita Popov authored
We can fold equality comparisons of non-inbounds geps to offset comparison (https://alive2.llvm.org/ce/z/x2Zp8b). The inbounds requirement is only necessary for relational comparisons.
-
OCHyams authored
For fully promoted variables dbg.assigns and dbg.values convey the same information and can be used interchangeably. This patch converts dbg.assigns to dbg.values for variables promoted by mem2reg. This reduces resource usage by reducing the amount of unnecessary function local metadata. The compile time tracker reports that CTMark projects build with LTO-O3-g with 0.4% fewer instructions retired and peak memory usage is reduced by 2.2%. Reviewed By: jryans Differential Revision: https://reviews.llvm.org/D145511
-
Pavel Labath authored
-
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
-