- Jun 08, 2022
-
-
Kito Cheng authored
Revert due to failed on LLVM_ENABLE_EXPENSIVE_CHECKS. This reverts commit e14d0490.
-
Fangrui Song authored
This makes the LLVM_ENABLE_PROJECTS mode (supported for compiler-rt, deprecated (D112724) for libcxx/libcxxabi/libunwind) closer to https://libcxx.llvm.org/BuildingLibcxx.html#bootstrapping-build . The layout is arguably superior because different libraries of target triples are in different directories, similar to GCC/Debian multiarch. When LLVM_DEFAULT_TARGET_TRIPLE is x86_64-unknown-linux-gnu, `lib/clang/15.0.0/lib/libclang_rt.asan-x86_64.a` is moved to `lib/clang/15.0.0/lib/x86_64-unknown-linux-gnu/libclang_rt.asan.a`. In addition, if the host compiler supports -m32 (multilib), `lib/clang/15.0.0/lib/libclang_rt.asan-i386.a` is moved to `lib/clang/15.0.0/lib/i386-unknown-linux-gnu/libclang_rt.asan.a`. Reviewed By: mstorsjo, ldionne, #libc Differential Revision: https://reviews.llvm.org/D107799
-
python3kgae authored
Check supportsTypedPointers instead of hasSetOpaquePointersValue when query if has typed ptr. Reviewed By: beanz Differential Revision: https://reviews.llvm.org/D127268
-
Kito Cheng authored
Spliter will try to extend a live range into `r` slot for a use operand, that's works on most situaion, however that not work correctly when the operand has tied to def, and the def operand is early clobber. Give an example to demo what's wrong: 0 %0 = ... 16 early-clobber %0 = Op %0 (tied-def 0), ... 32 ... = Op %0 Before extend: %0 = [0r, 0d) [16e, 32d) The point we want to extend is 0d to 16e not 16r in this case, but if we use 16r here we will extend nothing because that already contained in [16e, 32d). This patch add check for detect such case and adjust the extend point. Detailed explanation for testcase: https://reviews.llvm.org/D126047 Reviewed By: MatzeB Differential Revision: https://reviews.llvm.org/D126048
-
Kito Cheng authored
This testcase show the live range isn't construct correctly when subreg liveness is enabled. In the testcase `early-clobber-tied-def-subreg-liveness.ll`, first operand of `vsext.vf2 v8, v16, v0.t` is both def and use, and the use is come from the memory location of `.L__const._Z3foov.var_49`, it's load and spilled into stack, and then...v8 is overwrite by another instructions. ``` lui a0, %hi(.L__const._Z3foov.var_49) addi a0, a0, %lo(.L__const._Z3foov.var_49) ... vle16.v v8, (a0) # Load value from var_49 ... addi a0, sp, 16 ... vs2r.v v8, (a0) # Spill ... vl2r.v v8, (a1) # Reload ... lui a0, %hi(.L__const._Z3foov.var_40) addi a0, a0, %lo(.L__const._Z3foov.var_40) vle16.v v8, (a0) # Load value...into v8??? vmsbc.vx v0, v8, a0 # And use that. ... vsext.vf2 v8, v16, v0.t # But v8 is here...which is expect value from the reload ``` The `early-clobber-tied-def-subreg-liveness.mir` has more detailed infomation for that, `%25.sub_vrm2_0` is defined in 64, and used in 464, and defined again in 464, and we has used an inline asm to clobber all vector register for trigger spliter. ``` 0B bb.0.entry: 16B %0:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_49 32B %1:gpr = ADDI %0:gpr, target-flags(riscv-lo) @__const._Z3foov.var_49 48B dead $x0 = PseudoVSETIVLI 2, 73, implicit-def $vl, implicit-def $vtype 64B undef %25.sub_vrm2_0:vrn4m2nov0 = PseudoVLE16_V_M2 %1:gpr, 2, 4, implicit $vl, implicit $vtype 80B %3:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_48 96B %4:gpr = ADDI %3:gpr, target-flags(riscv-lo) @__const._Z3foov.var_48 112B %5:vr = PseudoVLE8_V_M1 %4:gpr, 2, 3, implicit $vl, implicit $vtype 128B %6:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_46 144B %7:gpr = ADDI %6:gpr, target-flags(riscv-lo) @__const._Z3foov.var_46 160B %25.sub_vrm2_1:vrn4m2nov0 = PseudoVLE16_V_M2 %7:gpr, 2, 4, implicit $vl, implicit $vtype 176B %9:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_45 192B %10:gpr = ADDI %9:gpr, target-flags(riscv-lo) @__const._Z3foov.var_45 208B %25.sub_vrm2_2:vrn4m2nov0 = PseudoVLE16_V_M2 %10:gpr, 2, 4, implicit $vl, implicit $vtype 224B INLINEASM &"" [sideeffect] [attdialect], $0:[clobber], ... 240B %12:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_44 256B %13:gpr = ADDI %12:gpr, target-flags(riscv-lo) @__const._Z3foov.var_44 272B dead $x0 = PseudoVSETIVLI 2, 73, implicit-def $vl, implicit-def $vtype 288B %25.sub_vrm2_3:vrn4m2nov0 = PseudoVLE16_V_M2 %13:gpr, 2, 4, implicit $vl, implicit $vtype 304B $x0 = PseudoVSETIVLI 2, 73, implicit-def $vl, implicit-def $vtype 320B %16:gpr = LUI target-flags(riscv-hi) @__const._Z3foov.var_40 336B %17:gpr = ADDI %16:gpr, target-flags(riscv-lo) @__const._Z3foov.var_40 352B %18:vrm2 = PseudoVLE16_V_M2 %17:gpr, 2, 4, implicit $vl, implicit $vtype 368B $x0 = PseudoVSETIVLI 2, 73, implicit-def $vl, implicit-def $vtype 384B %20:gpr = LUI 1048572 400B %21:gpr = ADDIW %20:gpr, 928 416B early-clobber %22:vr = PseudoVMSBC_VX_M2 %18:vrm2, %21:gpr, 2, 4, implicit $vl, implicit $vtype 432B $x0 = PseudoVSETIVLI 2, 9, implicit-def $vl, implicit-def $vtype 448B $v0 = COPY %22:vr 464B early-clobber %25.sub_vrm2_0:vrn4m2nov0 = PseudoVSEXT_VF2_M2_MASK %25.sub_vrm2_0:vrn4m2nov0(tied-def 0), %5:vr, killed $v0, 2, 4, 0, implicit $vl, implicit $vtype 480B %26:gpr = LUI target-flags(riscv-hi) @var_47 496B %27:gpr = ADDI %26:gpr, target-flags(riscv-lo) @var_47 512B PseudoVSSEG4E16_V_M2 %25:vrn4m2nov0, %27:gpr, 2, 4, implicit $vl, implicit $vtype 528B PseudoRET ``` When spliter will try to split %25: ``` selectOrSplit VRN4M2NoV0:%25 [64r,160r:4)[160r,208r:0)[208r,288r:1)[288r,464e:2)[464e,512r:3) 0@160r 1@208r 2@288r 3@464e 4@64r L0000000000000030 [160r,512r:0) 0@160r L00000000000000C0 [208r,512r:0) 0@208r L0000000000000300 [288r,512r:0) 0@288r L000000000000000C [64r,464e:1)[464e,512r:0) 0@464e 1@64r weight:1.179245e-02 w=1.179245e-02 ``` ``` Best local split range: 64r-208r, 6.999861e-03, 3 instrs enterIntvBefore 64r: not live leaveIntvAfter 208r: valno 1 useIntv [64B;216r): [64B;216r):1 blit [64r,160r:4): [64r;160r)=1(%29)(recalc) blit [160r,208r:0): [160r;208r)=1(%29)(recalc) blit [208r,288r:1): [208r;216r)=1(%29)(recalc) [216r;288r)=0(%28)(recalc) blit [288r,464e:2): [288r;464e)=0(%28)(recalc) blit [464e,512r:3): [464e;512r)=0(%28)(recalc) rewr %bb.0 464e:0 early-clobber %28.sub_vrm2_0:vrn4m2nov0 = PseudoVSEXT_VF2_M2_MASK %25.sub_vrm2_0:vrn4m2nov0(tied-def 0), %5:vr, $v0, 2, 4, 0, implicit $vl, implicit $vtype rewr %bb.0 288r:0 %28.sub_vrm2_3:vrn4m2nov0 = PseudoVLE16_V_M2 %13:gpr, 2, 4, implicit $vl, implicit $vtype rewr %bb.0 208r:1 %29.sub_vrm2_2:vrn4m2nov0 = PseudoVLE16_V_M2 %10:gpr, 2, 4, implicit $vl, implicit $vtype rewr %bb.0 160r:1 %29.sub_vrm2_1:vrn4m2nov0 = PseudoVLE16_V_M2 %7:gpr, 2, 4, implicit $vl, implicit $vtype rewr %bb.0 64r:1 undef %29.sub_vrm2_0:vrn4m2nov0 = PseudoVLE16_V_M2 %1:gpr, 2, 4, implicit $vl, implicit $vtype rewr %bb.0 464B:0 early-clobber %28.sub_vrm2_0:vrn4m2nov0 = PseudoVSEXT_VF2_M2_MASK %28.sub_vrm2_0:vrn4m2nov0(tied-def 0), %5:vr, $v0, 2, 4, 0, implicit $vl, implicit $vtype rewr %bb.0 512B:0 PseudoVSSEG4E16_V_M2 %28:vrn4m2nov0, %27:gpr, 2, 4, implicit $vl, implicit $vtype rewr %bb.0 216B:1 undef %28.sub_vrm1_0_sub_vrm1_1_sub_vrm1_2_sub_vrm1_3_sub_vrm1_4_sub_vrm1_5:vrn4m2nov0 = COPY %29.sub_vrm1_0_sub_vrm1_1_sub_vrm1_2_sub_vrm1_3_sub_vrm1_4_sub_vrm1_5:vrn4m2nov0 queuing new interval: %28 [216r,288r:0)[288r,464e:1)[464e,512r:2) 0@216r 1@288r 2@464e L000000000000000C [216r,216d:0)[464e,512r:1) 0@216r 1@464e L0000000000000300 [288r,512r:0) 0@288r L00000000000000C0 [216r,512r:0) 0@216r L0000000000000030 [216r,512r:0) 0@216r weight:8.706897e-03 Enqueuing %28 queuing new interval: %29 [64r,160r:0)[160r,208r:1)[208r,216r:2) 0@64r 1@160r 2@208r L000000000000000C [64r,216r:0) 0@64r L00000000000000C0 [208r,216r:0) 0@208r L0000000000000030 [160r,216r:0) 0@160r weight:1.097826e-02 Enqueuing %29 ``` The live range of first part subreg of %25 is become [216r,216d:0)[464e,512r:1), however first live range should live until 464e rather than just live and [216r,216d:0). And then the register allocator allocated wrong result accroding the live range info. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D126047 -
Nathan Lanza authored
This is required for the distribution system for installing the mlir-libraries component. This is copied from clang's equivalent feature. Differential Revision: https://reviews.llvm.org/D126837
-
Chuanqi Xu authored
Background: When we construct coroutine frame, we would insert a dbg.declare intrinsic for it: ``` %hdl = call void @llvm.coro.begin() ; would return coroutine handle call void @llvm.dbg.declare(metadata ptr %hdl, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) ``` And in the splitted coroutine, it looks like: ``` define void @coro_func.resume(ptr *hdl) { entry.resume: call void @llvm.dbg.declare(metadata ptr %hdl, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) } ``` And we would salvage the debug info by inserting a new alloca here: ``` define void @coro_func.resume(ptr %hdl) { entry.resume: %frame.debug = alloca ptr call void @llvm.dbg.declare(metadata ptr %frame.debug, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) store ptr %hdl, %frame.debug } ``` But now, the problem comes since the `dbg.declare` refers to the address of that alloca instead of actual coroutine handle. I saw there are codes to solve the problem but it only applies to complex expression only. I feel if it is OK to relax the condition to make it work for `__coro_frame`. Reviewed By: jmorse Differential Revision: https://reviews.llvm.org/D126277 -
Nathan Lanza authored
They are now `using` aliases and thus the comments about iplist are now incorrect. Remove them here. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95210
-
Sunho Kim authored
This patch implements two most commonly used Global Offset Table relocations in ELF/AARCH64: R_AARCH64_ADR_GOT_PAGE and R_AARCH64_LD64_GOT_LO12_NC. It implements the GOT table manager by extending the existing PerGraphGOTAndPLTStubsBuilder. A future patch will unify this with the MachO implementation to produce a generic aarch64 got table manager. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D127057
-
Leonard Chan authored
I believe this should've been fixed with 4b15e665 which landed after this initial patch, but I reverted too early before I saw the builder turn green again.
-
Joe Loser authored
This reverts commit 3583826b. Instead of marking the test unsupported for AIX, the choice is to bump the timeout for CI as done in 76c7e1f2 and 222bd83d Differential Revision: https://reviews.llvm.org/D127242
-
Wael Yehia authored
InstCombine tries to rewrite %prod = mul nsw i64 %X, Scale %acc = add nsw i64 %prod, Offset %0 = alloca i8, i64 %acc, align 4 %1 = bitcast i8* %0 to i32* Use ( %1 ) into %prod = mul nsw i64 %X, Scale/4 %acc = add nsw i64 %prod, Offset/4 %0 = alloca i32, i64 %acc, align 4 Use (%0) But it assumes Scale is unsigned, and performs an unsigned division. So we should bail out if Scale cannot be interpreted as an unsigned safely. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D126546
-
Lang Hames authored
Implement R_AARCH64_ABS64 relocation entry. This relocation type is generated when creating a static function pointer to symbol. Reviewed By: lhames, sgraenitz Differential Revision: https://reviews.llvm.org/D126658
-
Kevin Athey authored
Depends on https://reviews.llvm.org/D127185. Differential Revision: https://reviews.llvm.org/D127264
-
Leonard Chan authored
This reverts commit dd045ddf. This broke the sanitizer-windows builder at https://lab.llvm.org/buildbot/#/builders/127/builds/30751.
-
Sunho Kim authored
Implement R_AARCH64_LDST*_ABS_LO12_NC relocaiton entries by reusing PageOffset21 generic relocation edge. The difference between MachO backend is that in ELF, the shift value is explicitly given by relocation type. lld generates the relocation type that matches with instruction bitwidth, so getting the shift value implicitly from instruction bytes should be fine in typical use cases.
-
Leonard Chan authored
One of the checks in realloc_too_big.c actually printed a regular warning and not an OOM error, so the check shouldn't be updated.
-
Leonard Chan authored
Rather than checking a bunch of individual platforms. Differential Revision: https://reviews.llvm.org/D126825
-
Leonard Chan authored
This updates existing asan allocator settings to use the same allocator settings as what lsan uses for platforms where they already match. Differential Revision: https://reviews.llvm.org/D126927
-
Derek Schuff authored
NFC; Just update the test to ensure that both known and custom sections are removed. Review left over from https://reviews.llvm.org/D126509
-
Leonard Chan authored
This way downstream tools that read sanitizer output can differentiate between OOM errors reported by sanitizers from other sanitizer errors. Changes: - Introduce ErrorIsOOM for checking if a platform-specific error code from an "mmap" is an OOM err. - Add ReportOOMError which just prepends this error message to the start of a Report call. - Replace some Reports for OOMs with calls to ReportOOMError. - Update necessary tests. Differential Revision: https://reviews.llvm.org/D127161
-
Lang Hames authored
-
Sunho Kim authored
Implements R_AARCH64_ADR_PREL_PG_HI21 and R_AARCH64_ADD_ABS_LO12_NC fixup edges using the generic aarch64 patch edges. Reviewed By: lhames, sgraenitz Differential Revision: https://reviews.llvm.org/D126287
-
Kevin Athey authored
Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D127185
-
Kevin Athey authored
These were missed in https://reviews.llvm.org/D127145. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D127177
-
Wolfgang Pieb authored
This reverts commit e3f6eda8. Failure in unittest on https://lab.llvm.org/buildbot*builders/171/builds/15666
-
Sanjay Patel authored
If we don't demand low bits and it is valid to pre-shift a constant: (C2 >> X) << C1 --> (C2 << C1) >> X https://alive2.llvm.org/ce/z/_UzTMP This is the reverse-order shift sibling to 82040d41 ( D127122 ). It seems likely that we would want to add this to the SDAG version of the code too to keep it on par with IR.
-
Sanjay Patel authored
The tests are adapted from the sibling folds' tests (see D127122).
-
Sanjay Patel authored
-
owenca authored
Fixes #55912. Differential Revision: https://reviews.llvm.org/D127183
-
Pengxuan Zheng authored
* The yaml input is inlined into the test file. * Unnecessary members and fields are removed. Reviewed By: thieta Differential Revision: https://reviews.llvm.org/D127235
-
Nico Weber authored
-
Douglas Yung authored
This reverts commit e80748ff. This was causing a test failure on a buildbot: https://lab.llvm.org/buildbot/#/builders/139/builds/22964
-
Paul Kirth authored
Repalce the fixed buffer in SymbolizerProcess with InternalScopedString, and simply append to it when reading data. Fixes #55460 Reviewed By: vitalybuka, leonardchan Differential Revision: https://reviews.llvm.org/D126580
-
Wolfgang Pieb authored
A change to the allocation characteristics of MDNodes, introducing the ability to add operands one at a time. This functionality is restricted to MDTuples. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D125998
-
Jason Molenda authored
This test depends on multiple threads with one of them hitting a watchpoint at the same time as a breakpoint, and can fail because of the way arm64 watchpoints are handled. I added skips to most of these via ``` commit bef4da4a Author: Jason Molenda <jason@molenda.com> Date: Wed May 25 16:05:16 2022 -0700 Skip testing of watchpoint hit-count/ignore-count on multithreaded ``` but missed that this test is susceptable to the same issue.
-
Aart Bik authored
The `init` and `tensor` ops are renamed (and one moved to another dialect). Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D127169
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Mitch Phillips authored
-