Commit
6bf84871e9382fe7bde1117194bc15abb2b09f68
by Andrey.Churbanov[OpenMP] libomp: add UNLIKELY hints to rarely executed branches
Added UNLIKELY hint to one-time or rarely executed branches. This improves performance of the library on some tasking benchmarks.
Differential Revision: https://reviews.llvm.org/D92322
|
 | openmp/runtime/src/kmp_tasking.cpp |
 | openmp/runtime/src/kmp_itt.inl |
Commit
94ead0190ff18be337c5c84abccc315fd68f41fc
by lebedev.ri[InstCombine] Improve vector undef handling for sext(ashr(shl(trunc()))) fold, 2
If the shift amount was undef for some lane, the shift amount in opposite shift is irrelevant for that lane, and the new shift amount for that lane can be undef.
|
 | llvm/test/Transforms/InstCombine/trunc.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp |
 | llvm/test/Transforms/InstCombine/sext.ll |
Commit
fd679107d670d8fd31b62245b433187b4d72a9d0
by lebedev.ri[InstCombine] Optimize away the unnecessary multi-use sign-extend
C.f. https://bugs.llvm.org/show_bug.cgi?id=47765
Added a case for handling the sign-extend (Shl+AShr) for multiple uses, to optimize it away for an individual use, when the demanded bits aren't affected by sign-extend.
https://rise4fun.com/Alive/lgf
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D91343
|
 | llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp |
 | llvm/test/Transforms/InstCombine/and.ll |
Commit
00f4269cef3773df932158728de9fe07d2f7ff41
by llvm-dev[X86] Add PR48223 usubsat test case
|
 | llvm/test/CodeGen/X86/usub_sat_vec.ll |
Commit
10b164d2f72aa696e077507b4c5a3a5e11be8e6f
by marukawa[VE] Add vmul and vdiv intrinsic instructions
Add vmul and vdiv intrinsic instructions and regression tests.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D92377
|
 | llvm/lib/Target/VE/VEInstrIntrinsicVL.gen.td |
 | llvm/include/llvm/IR/IntrinsicsVEVL.gen.td |
 | llvm/test/CodeGen/VE/VELIntrinsics/vmul.ll |
 | llvm/test/CodeGen/VE/VELIntrinsics/vdiv.ll |
Commit
17427ec3f31c2a95c106dbaa98c43b72a7c06a31
by kupokupokupopo[RISCV][crt] support building without init_array
Reviewed By: luismarques, phosek, kito-cheng
Differential Revision: https://reviews.llvm.org/D87997
|
 | compiler-rt/lib/crt/crtbegin.c |
Commit
4431c212a0a08c2b6552e6a476a15b142d7c6bb9
by thakislld/ELF: Make three rarely-used flags work with --reproduce
All three use readFile() for their argument so their argument file is already copied to the tar, but we weren't rewriting the argument to point to the path used in the tar file.
No test because the change is trivial (several other flags in createResponseFile() also aren't tested, likely for the same reason.)
Differential Revision: https://reviews.llvm.org/D92356
|
 | lld/ELF/DriverUtils.cpp |
Commit
7a4f1d59b82e5defbce4498347291e6ef9f1281c
by flo[ConstraintElimination] Decompose GEP %ptr, ZEXT(SHL()).
Add support to decompose a GEP with a ZEXT(SHL()) operand.
|
 | llvm/lib/Transforms/Scalar/ConstraintElimination.cpp |
 | llvm/test/Transforms/ConstraintElimination/geps.ll |
Commit
1b209ff9e3e13492fd56ae6662989ef47510db4d
by llvm-dev[DAG] Move vselect(icmp_ult, 0, sub(x,y)) -> usubsat(x,y) to DAGCombine (PR40111)
Move the X86 VSELECT->USUBSAT fold to DAGCombiner - there's nothing target specific about these folds.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/test/CodeGen/X86/usub_sat_vec.ll |
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
Commit
64f04629aa7a4cf9d2deb725683959faa4a857fe
by Raphael Isemann[lldb][NFC] Modernize and cleanup TestClassTemplateParameterPack
* Un-inline the test. * Use expect_expr everywhere and also check all involved types. * Clang-format the test sources. * Explain what we're actually testing with the 'C' and 'D' templates. * Split out the non-template-parameter-pack part of the test into its own small test.
|
 | lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile |
 | lldb/test/API/lang/cpp/non-type-template-param/Makefile |
 | lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp |
 | lldb/test/API/lang/cpp/non-type-template-param/main.cpp |
 | lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py |
 | lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py |
Commit
9f60b8b3d2e2cd38b9ae45da7e36a77b3c9dd258
by spatel[InstCombine] canonicalize sign-bit-shift of difference to ext(icmp)
icmp is the preferred spelling in IR because icmp analysis is expected to be better than any other analysis. This should lead to more follow-on folding potential.
It's difficult to say exactly what we should do in codegen to compensate. For example on AArch64, which of these is preferred: sub w8, w0, w1 lsr w0, w8, #31
vs: cmp w0, w1 cset w0, lt
If there are perf regressions, then we should deal with those in codegen on a case-by-case basis.
A possible motivating example for better optimization is shown in: https://llvm.org/PR43198 but that will require other transforms before anything changes there.
Alive proof: https://rise4fun.com/Alive/o4E
Name: sign-bit splat Pre: C1 == (width(%x) - 1) %s = sub nsw %x, %y %r = ashr %s, C1 => %c = icmp slt %x, %y %r = sext %c
Name: sign-bit LSB Pre: C1 == (width(%x) - 1) %s = sub nsw %x, %y %r = lshr %s, C1 => %c = icmp slt %x, %y %r = zext %c
|
 | llvm/test/Transforms/InstCombine/sub-ashr-and-to-icmp-select.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp |
 | llvm/test/Transforms/InstCombine/ashr-lshr.ll |
 | llvm/test/Transforms/InstCombine/sub-ashr-or-to-icmp-select.ll |
Commit
eedf0ed63e82ba2f8d2cbc12d6dae61035ed4f9a
by david.green[ARM] Mark select and selectcc of MVE vector operations as expand.
We already expand select and select_cc in codegenprepare, but they can still be generated under some situations. Explicitly mark them as expand to ensure they are not produced, leading to a failure to select the nodes.
Differential Revision: https://reviews.llvm.org/D92373
|
 | llvm/lib/Target/ARM/ARMISelLowering.cpp |
 | llvm/test/CodeGen/Thumb2/mve-selectcc.ll |
Commit
107e92dff8ca3c27478baccc50e183d81da7ea17
by benny.kra[DAG] Remove unused variable. NFC.
|
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
Commit
136f98e5236522f55693b8b2d23e87692987f734
by spatel[x86] adjust cost model values for minnum/maxnum with fast-math-flags
Without FMF, we lower these intrinsics into something like this:
vmaxsd %xmm0, %xmm1, %xmm2 vcmpunordsd %xmm0, %xmm0, %xmm0 vblendvpd %xmm0, %xmm1, %xmm2, %xmm0
But if we can ignore NANs, the single min/max instruction is enough because there is no need to fix up the x86 logic that corresponds to X > Y ? X : Y.
We probably want to make other adjustments for FP intrinsics with FMF to account for specialized codegen (for example, FSQRT).
Differential Revision: https://reviews.llvm.org/D92337
|
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
 | llvm/test/Analysis/CostModel/X86/fminnum.ll |
 | llvm/test/Analysis/CostModel/X86/fmaxnum.ll |
Commit
cd5897d55908827faf3e16c505bd79732a8f6eb6
by enye.shi[HIP] Fix static-lib test CHECK bug
Fix hip test failures that were introduced by previous changes to hip-toolchain-rdc-static-lib.hip test. The .*lld.* is matching a longer string than expected.
Differential Revision: https://reviews.llvm.org/D92342
|
 | clang/test/Driver/hip-toolchain-rdc-static-lib.hip |
Commit
735e6c888ec8d647609d242a165e3631423a709d
by courbet[MergeICmps] Fix missing split.
We were not correctly splitting a blocks for chains of length 1.
Before that change, additional instructions for blocks in chains of length 1 were not split off from the block before removing (this was done correctly for chains of longer size). If this first block contained an instruction referenced elsewhere, deleting the block, would result in invalidation of the produced value.
This caused a miscompile which motivated D92297 (before D17993, nonnull and dereferenceable attributed were not added so MergeICmps were not triggered.) The new test gep-references-bb.ll demonstrate the issue.
The regression was introduced in rG0efadbbcdeb82f5c14f38fbc2826107063ca48b2.
This supersedes D92364.
Test case by MaskRay (Fangrui Song).
Differential Revision: https://reviews.llvm.org/D92375
|
 | llvm/test/Transforms/MergeICmps/X86/gep-references-bb.ll |
 | llvm/lib/Transforms/Scalar/MergeICmps.cpp |
Commit
864dda5fd50471acaee335c1643cbd424ef319ce
by aqjune[InstSimplify] Add tests that fold instructions with poison operands (NFC)
|
 | llvm/test/Transforms/InstSimplify/and.ll |
 | llvm/test/Transforms/InstSimplify/insertvalue.ll |
 | llvm/test/Transforms/InstSimplify/or.ll |
 | llvm/test/Transforms/InstSimplify/select.ll |
 | llvm/test/Transforms/InstSimplify/fp-undef-poison.ll |
 | llvm/test/Transforms/InstSimplify/phi.ll |
 | llvm/test/Transforms/InstSimplify/gep.ll |
 | llvm/test/Transforms/InstSimplify/fp-undef.ll |
 | llvm/test/Transforms/InstSimplify/shufflevector.ll |
 | llvm/test/Transforms/InstSimplify/extract-element.ll |
 | llvm/test/Transforms/InstSimplify/mul.ll |
 | llvm/test/Transforms/InstSimplify/maxmin_intrinsics.ll |
 | llvm/test/Transforms/InstSimplify/xor.ll |
 | llvm/test/Transforms/InstSimplify/sub.ll |
 | llvm/test/Transforms/InstSimplify/icmp.ll |
 | llvm/test/Transforms/InstSimplify/fminmax-folds.ll |
 | llvm/test/Transforms/InstSimplify/fcmp.ll |
 | llvm/test/Transforms/InstSimplify/add.ll |
 | llvm/test/Transforms/InstSimplify/shift.ll |
 | llvm/test/Transforms/InstSimplify/saturating-add-sub.ll |
 | llvm/test/Transforms/InstSimplify/call.ll |
 | llvm/test/Transforms/InstSimplify/insertelement.ll |
 | llvm/test/Transforms/InstSimplify/rem.ll |
 | llvm/test/Transforms/InstSimplify/div.ll |
Commit
f0659c0673417582038aa4a3c13edbfa0abb6b9a
by i[X86] Support modifier @PLTOFF for R_X86_64_PLTOFF64
`gcc -mcmodel=large` can emit @PLTOFF.
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D92294
|
 | llvm/lib/MC/MCExpr.cpp |
 | llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp |
 | llvm/include/llvm/MC/MCExpr.h |
 | llvm/test/MC/X86/pltoff.s |
Commit
a5f95887d0f8d27f1c33f19944d0c1da66aef606
by i[ELF][test] Add some tests for versioned symbols in object files
Test the symbol resolution related to
* defined foo@@v1 and foo@v1 in object files/shared objects * undefined foo@v1 * weak foo@@v1 and foo@v1 * visibility * interaction with --wrap.
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D92258
|
 | lld/test/ELF/symver.s |
Commit
941e9336d092f0ccef35e0f425d97f7def5ed1b0
by i[ELF] Make foo@@v1 resolve undefined foo@v1
The symbol resolution rules for versioned symbols are:
* foo@@v1 (default version) resolves both undefined foo and foo@v1 * foo@v1 (non-default version) resolves undefined foo@v1
Note, foo@@v1 must be defined (the assembler errors if attempting to create an undefined foo@@v1).
For defined foo@@v1 in a shared object, we call `SymbolTable::addSymbol` twice, one for foo and the other for foo@v1. We don't do the same for object files, so foo@@v1 defined in one object file incorrectly does not resolve a foo@v1 reference in another object file.
This patch fixes the issue by reusing the --wrap code to redirect symbols in object files. This has to be done after processing input files because foo and foo@v1 are two separate symbols if we haven't seen foo@@v1.
Add a helper `Symbol::getVersionSuffix` to retrieve the optional trailing `@...` or `@@...` from the possibly truncated symbol name.
Depends on D92258
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D92259
|
 | lld/test/ELF/symver.s |
 | lld/ELF/Symbols.h |
 | lld/ELF/Driver.cpp |
 | lld/ELF/Symbols.cpp |
Commit
624af932a808b363a888139beca49f57313d9a3b
by nikita.ppv[MemCpyOpt] Port to MemorySSA
This is a straightforward port of MemCpyOpt to MemorySSA following the approach of D26739. MemDep queries are replaced with MSSA queries without changing the overall structure of the pass. Some care has to be taken to account for differences between these APIs (MemDep also returns reads, MSSA doesn't).
Differential Revision: https://reviews.llvm.org/D89207
|
 | llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp |
 | llvm/test/Transforms/MemCpyOpt/callslot.ll |
 | llvm/test/Transforms/MemCpyOpt/stackrestore.ll |
 | llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h |
 | llvm/test/Transforms/MemCpyOpt/merge-into-memset.ll |
 | llvm/test/Transforms/MemCpyOpt/invariant.start.ll |
 | llvm/test/Transforms/MemCpyOpt/mixed-sizes.ll |
 | llvm/test/Transforms/MemCpyOpt/memcpy.ll |
 | llvm/test/Transforms/MemCpyOpt/nonlocal-memcpy-memcpy.ll |
 | llvm/test/Transforms/MemCpyOpt/memcpy-invoke-memcpy.ll |
Commit
843c2b2303004c1a7e4fa8037905fbc70601b155
by i[ELF] Error for undefined foo@v1
If an object file has an undefined foo@v1, we emit a dynamic symbol foo. This is incorrect if at runtime a shared object provides the non-default version foo@v1 (the undefined foo may bind to foo@@v2, for example).
GNU ld issues an error for this case, even if foo@v1 is undefined weak (https://sourceware.org/bugzilla/show_bug.cgi?id=3351). This behavior makes sense because to represent an undefined foo@v1, we have to construct a Verneed entry. However, without knowing the defining filename, we cannot construct a Verneed entry (Verneed::vn_file is unavailable).
This patch implements the error.
Depends on D92258
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D92260
|
 | lld/ELF/Relocations.cpp |
 | lld/test/ELF/symver.s |
 | lld/ELF/Symbols.h |
 | lld/test/ELF/lto/version-script2.ll |
Commit
9c5504adceb544d9954ddb8ff3035a414f4b1423
by bmahjour[LV] Epilogue Vectorization with Optimal Control Flow
This is yet another attempt at providing support for epilogue vectorization following discussions raised in RFC http://llvm.1065342.n5.nabble.com/llvm-dev-Proposal-RFC-Epilog-loop-vectorization-tt106322.html#none and reviews D30247 and D88819.
Similar to D88819, this patch achieve epilogue vectorization by executing a single vplan twice: once on the main loop and a second time on the epilogue loop (using a different VF). However it's able to handle more loops, and generates more optimal control flow for cases where the trip count is too small to execute any code in vector form.
Reviewed By: SjoerdMeijer
Differential Revision: https://reviews.llvm.org/D89566
|
 | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp |
 | llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll |
 | llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization-profitability.ll |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-liveout.ll |
 | llvm/docs/Vectorizers.rst |
 | llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll |
 | llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll |
 | llvm/docs/epilogue-vectorization-cfg.png |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-limitations.ll |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization.ll |
 | llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h |
 | llvm/test/Transforms/LoopVectorize/X86/invariant-store-vectorization.ll |
Commit
b99e2b8b14f4ba50f9eb80bd5a2c1824099a7f96
by thakisclang/darwin: Use response files with ld64.lld.darwinnew
The new MachO lld just grew support for response files in D92149, so let the clang driver use it.
Differential Revision: https://reviews.llvm.org/D92399
|
 | clang/lib/Driver/ToolChains/Darwin.cpp |
Commit
ae7ec47fc655537ce82c0bfee0b587921663eaff
by lebedev.ri[NFC][clang-tidy] Port rename_check.py to Python3
|
 | clang-tools-extra/clang-tidy/rename_check.py |
Commit
54eab293f523956bdc4b1a98b6cf5abc0bd1ef3f
by nikita.ppv[BasicAA] Add test for suboptimal result with unknown sizes (NFC)
|
 | llvm/test/Analysis/BasicAA/phi-aa.ll |
Commit
e0bf2349303f6b40e3ddd5377ea08a5c0867ece4
by rahmanlLet .llvm_bb_addr_map section use the same unique id as its associated .text section.
Currently, `llvm_bb_addr_map` sections are generated per section names because we use the `LinkedToSymbol` argument of getELFSection. This will cause the address map tables of functions grouped into the same section when `-function-sections=true -unique-section-names=false` which is not the intended behaviour. This patch lets the unique id of every `.text` section propagate to the associated `.llvm_bb_addr_map` section.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D92113
|
 | llvm/test/CodeGen/X86/basic-block-sections-labels.ll |
 | llvm/lib/MC/MCObjectFileInfo.cpp |
Commit
c30d5101f14f7e8a1c0f80c8663b54de2a7640fd
by Louis Dionne[libc++] Optimize the number of assignments in std::exclusive_scan
Reported in https://twitter.com/blelbach/status/1169807347142676480
Differential Revision: https://reviews.llvm.org/D67273
|
 | libcxx/include/numeric |
Commit
c94af03f7f3223e917b00e1c0263a3b8d90b76bc
by bmahjourRevert "[LV] Epilogue Vectorization with Optimal Control Flow"
This reverts commit 9c5504adceb544d9954ddb8ff3035a414f4b1423. Reverting to investigate build failure in http://lab.llvm.org:8011/#/builders/98/builds/1461/steps/9
|
 | llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization-profitability.ll |
 | llvm/docs/Vectorizers.rst |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-limitations.ll |
 | llvm/docs/epilogue-vectorization-cfg.png |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-liveout.ll |
 | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp |
 | llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h |
 | llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll |
 | llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization.ll |
 | llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll |
 | llvm/test/Transforms/LoopVectorize/X86/invariant-store-vectorization.ll |
Commit
26d3aaeb3aac39329dd845bd0012ad961653dbc6
by aeubanks[LTO][NewPM] Run verifier when doing LTO
This matches the legacy PM.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D92138
|
 | llvm/lib/LTO/LTOBackend.cpp |
 | lld/test/ELF/lto/verify-invalid.ll |
Commit
bb993b1d9de34b8e47511a746bf4422ba206123b
by i[ELF][test] Fix lto/version-script2.ll
|
 | lld/test/ELF/lto/version-script2.ll |
Commit
a5309438fe8d4f1212ae645bc0aaf71fdf73d028
by istatic const char *const foo => const char foo[]
By default, a non-template variable of non-volatile const-qualified type having namespace-scope has internal linkage, so no need for `static`.
|
 | llvm/lib/Analysis/ReleaseModeModelRunner.cpp |
 | llvm/lib/IRReader/IRReader.cpp |
 | llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp |
 | llvm/lib/Transforms/Scalar/StructurizeCFG.cpp |
 | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp |
 | llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp |
 | llvm/lib/Object/Archive.cpp |
 | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp |
 | llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp |
 | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp |
 | llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp |
 | llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp |
 | llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp |
Commit
37340798ccb00b9c3a53e8a5f1b6430e85870338
by zahira.ammarguellatArgument dependent lookup with class argument is recursing into base classes that haven't been instantiated. This is generating an assertion in DeclTemplate.h. Fix for Bug25668.
|
 | clang/lib/Sema/SemaLookup.cpp |
 | clang/lib/Sema/SemaOpenMP.cpp |
 | clang/test/OpenMP/template-specialization.cpp |
Commit
4eaa024863f4a86151beb7971301c6ab10a9de01
by Saleem AbdulrasoolAPINotes: constify `dump` methods (NFC)
This simply marks the functions as const as they do not mutate the value. This is useful for debugging iterations during development. NFCI.
|
 | clang/lib/APINotes/APINotesTypes.cpp |
 | clang/include/clang/APINotes/Types.h |
Commit
d7fec38f053659725c94fd4580a5fb56af046820
by lebedev.ri[DAGCombiner][NFC] Replace duplicate implementation flipBoolean with DAG.getLogicalNOT
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D92246
|
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
Commit
cacb1a9f930e35371c885cb572823626fc90a0ee
by thakis[gn build] sync script: try to make sync script even clearer
Turns out startswith() takes an optional start parameter :)
No behavior change.
|
 | llvm/utils/gn/build/sync_source_lists_from_cmake.py |
Commit
a36bd4c90dcca82be9b64f65dbd22e921b6485ef
by aeubanks[CMake][NewPM] Move ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER into llvm/
This allows us to use its value everywhere, rather than just clang. Some other places, like opt and lld, will use its value soon.
The #define for it is now in llvm-config.h.
Reviewed By: rnk, hans
Differential Revision: https://reviews.llvm.org/D92072
|
 | llvm/utils/gn/secondary/clang/test/BUILD.gn |
 | llvm/CMakeLists.txt |
 | llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn |
 | clang/lib/Driver/ToolChains/CommonArgs.cpp |
 | clang/test/lit.site.cfg.py.in |
 | clang/CMakeLists.txt |
 | clang/include/clang/Config/config.h.cmake |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | llvm/include/llvm/Config/llvm-config.h.cmake |
 | llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn |
 | clang/test/CMakeLists.txt |
 | clang/include/clang/Driver/Options.td |
Commit
79ba7967f4813445c3ce5624170c19584bbfda72
by sylvain.audi[clang-scan-deps] Improve argument parsing to find target object file path.
Support the joined version of -o (-ofilepath), and ensure we use the last provided -o option.
Differential Revision: https://reviews.llvm.org/D92330
|
 | clang/test/ClangScanDeps/target-filename.cpp |
 | clang/test/ClangScanDeps/Inputs/target-filename-cdb.json |
 | clang/tools/clang-scan-deps/ClangScanDeps.cpp |
Commit
2074fec5beb4eca9d438acd3b37c2c6d20b891b1
by joker.eph[MLIR][LLVM] Fix a tiny typo in the dialect docs.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D92333
|
 | mlir/docs/Dialects/LLVM.md |
Commit
e0665a9050840650809fa4eb6ef23bd8f5adfbf0
by jonathan.l.peyton[OpenMP] Add support for Intel's umonitor/umwait
These changes add support for Intel's umonitor/umwait usage in wait code, for architectures that support those intrinsic functions. Usage of umonitor/umwait is off by default, but can be turned on by setting the KMP_USER_LEVEL_MWAIT environment variable.
Differential Revision: https://reviews.llvm.org/D91189
|
 | openmp/runtime/src/i18n/en_US.txt |
 | openmp/runtime/src/kmp_stats.h |
 | openmp/runtime/src/kmp_lock.cpp |
 | openmp/runtime/src/kmp_settings.cpp |
 | openmp/runtime/cmake/config-ix.cmake |
 | openmp/runtime/src/kmp_os.h |
 | openmp/runtime/src/kmp_runtime.cpp |
 | openmp/runtime/src/z_Windows_NT_util.cpp |
 | openmp/runtime/src/kmp_tasking.cpp |
 | openmp/runtime/src/kmp_taskdeps.cpp |
 | openmp/runtime/src/kmp_barrier.cpp |
 | openmp/runtime/src/kmp_wait_release.h |
 | openmp/runtime/src/kmp.h |
 | openmp/runtime/src/kmp_global.cpp |
 | openmp/runtime/src/kmp_config.h.cmake |
 | openmp/runtime/src/z_Linux_util.cpp |
 | openmp/runtime/src/kmp_wait_release.cpp |
Commit
1314a4938fba865412598b7227cb4657d59cd8bc
by aeubanks[LTO][wasm][NewPM] Allow using new pass manager for wasm LTO
Reviewed By: sbc100
Differential Revision: https://reviews.llvm.org/D92150
|
 | lld/wasm/Options.td |
 | lld/wasm/LTO.cpp |
 | lld/test/wasm/lto/new-pass-manager.ll |
 | lld/wasm/Config.h |
 | lld/wasm/Driver.cpp |
Commit
f9eaa4650f5d5948af7050efef9d4098ff7f0ae8
by zahira.ammarguellatFix erroneous edit in https://github.com/llvm/llvm-project/actions/runs/394499364
|
 | clang/lib/Sema/SemaLookup.cpp |
Commit
806a76c001233f2c70bf93c73fb955c64c1c080f
by aeubanksRevert "[CMake][NewPM] Move ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER into llvm/"
The new pass manager was accidentally enabled by default with this change.
This reverts commit a36bd4c90dcca82be9b64f65dbd22e921b6485ef.
|
 | llvm/utils/gn/secondary/clang/test/BUILD.gn |
 | clang/test/CMakeLists.txt |
 | llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn |
 | clang/test/lit.site.cfg.py.in |
 | llvm/CMakeLists.txt |
 | clang/CMakeLists.txt |
 | clang/lib/Driver/ToolChains/CommonArgs.cpp |
 | llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn |
 | clang/include/clang/Config/config.h.cmake |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | clang/include/clang/Driver/Options.td |
 | llvm/include/llvm/Config/llvm-config.h.cmake |
Commit
6b043ecdb71bb0354cbd64d766cc21b7d20dca84
by jurahul[MLIR] Fix genTypeInterfaceMethods() to work correctly with InferTypeOpInterface
- Change InferTypeOpInterface::inferResultTypes to use fully qualified types matching the ones generated by genTypeInterfaceMethods, so the redundancy can be detected. - Move genTypeInterfaceMethods() before genOpInterfaceMethods() so that the inferResultTypes method generated by genTypeInterfaceMethods() takes precedence over the declaration that might be generated by genOpInterfaceMethods() - Modified an op in the test dialect to exercise this (the modified op would fail to generate valid C++ code due to duplicate inferResultTypes methods).
Differential Revision: https://reviews.llvm.org/D92414
|
 | mlir/include/mlir/Interfaces/InferTypeOpInterface.td |
 | mlir/test/lib/Dialect/Test/TestOps.td |
 | mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp |
Commit
99d82412f822190a6caa3e3a5b9f87b71f56de47
by aeubanks[LLD][ELF][NewPM] Add option to force legacy PM
In preparation for the NPM switch.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D92417
|
 | lld/ELF/Driver.cpp |
 | lld/ELF/Options.td |
 | lld/test/ELF/lto/new-pass-manager.ll |
Commit
2671fccf0381769276ca8246ec0499adcb9b0355
by Louis Dionne[libc++] NFC: Remove unused macros in <__config>
|
 | libcxx/include/__config |
Commit
aafb3662103f4b3df315967c0cf4f6eec6bff0c4
by aeubanksReland [CMake][NewPM] Move ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER into llvm/
This allows us to use its value everywhere, rather than just clang. Some other places, like opt and lld, will use its value soon.
Rename it internally to LLVM_ENABLE_NEW_PASS_MANAGER.
The #define for it is now in llvm-config.h.
The initial land accidentally set the value of LLVM_ENABLE_NEW_PASS_MANAGER to the string ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER instead of its value.
Reviewed By: rnk, hans
Differential Revision: https://reviews.llvm.org/D92072
|
 | llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | clang/test/CMakeLists.txt |
 | llvm/CMakeLists.txt |
 | llvm/include/llvm/Config/llvm-config.h.cmake |
 | llvm/utils/gn/secondary/clang/test/BUILD.gn |
 | clang/include/clang/Driver/Options.td |
 | clang/lib/Driver/ToolChains/CommonArgs.cpp |
 | llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn |
 | clang/CMakeLists.txt |
 | clang/test/lit.site.cfg.py.in |
 | clang/include/clang/Config/config.h.cmake |
Commit
1b8ed1d03dee63fd0b787ab52d0b195df9c35b9c
by cchen[OpenMP51][DOCS] Claim "add present modifier in defaultmap clause", NFC.
|
 | clang/docs/OpenMPSupport.rst |
Commit
26b8ea2e3782890be96612701866d8ccec616bdc
by omair.javaidRegisterInfoPOSIX_arm64 remove unused bytes from g/G packet
This came up while putting together our new strategy to create g/G packets in compliance with GDB RSP protocol where register offsets are calculated in increasing order of register numbers without any unused spacing.
RegisterInfoPOSIX_arm64::GPR size was being calculated after alignment correction to 8 bytes which meant there was a 4 bytes unused space between last gpr (cpsr) and first vector register V. We have put LLVM_PACKED_START decorator on RegisterInfoPOSIX_arm64::GPR to make sure single byte alignment is enforced. Moreover we are now doing to use arm64 user_pt_regs struct defined in ptrace.h for accessing ptrace user registers.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D92063
|
 | lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h |
 | lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h |
Commit
78cb4562faa7315fff030593bc6bca4dc033f803
by omair.javaidMake offset field optional in RegisterInfo packet for Arm64
This patch carries forward our aim to remove offset field from qRegisterInfo packets and XML register description. I have created a new function which returns if offset fields are dynamic meaning client can calculate offset on its own based on register number sequence and register size. For now this function only returns true for NativeRegisterContextLinux_arm64 but we can test this for other architectures and make it standard later.
As a consequence we do not send offset field from lldb-server (arm64 for now) while other stubs dont have an offset field so it wont effect them for now. On the client side we have replaced previous offset calculation algorithm with a new scheme, where we sort all primary registers in increasing order of remote regnum and then calculate offset incrementally.
This committ also includes a test to verify all of above functionality on Arm64.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D91241
|
 | lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h |
 | lldb/include/lldb/Host/common/NativeRegisterContext.h |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp |
 | lldb/test/API/tools/lldb-server/registers-target-xml-reading/TestGdbRemoteTargetXmlPacket.py |
 | lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp |
 | lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp |
 | lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp |
 | lldb/unittests/tools/lldb-server/tests/TestClient.cpp |
 | lldb/test/API/functionalities/gdb_remote_client/TestAArch64XMLRegOffsets.py |
Commit
e1f613ce3c61d0664fd3cff663f290cf1c2b9696
by mgorny[lldb] [test] Reenable two passing tests on FreeBSD
[Reenable TestReproducerAttach and TestThreadSpecificBpPlusCondition on FreeBSD -- both seem to pass correctly now.
|
 | lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py |
 | lldb/test/API/functionalities/reproducers/attach/TestReproducerAttach.py |
Commit
615f63e149f31d6a97b5233b4fe634db92e19aa9
by dblaikieRevert "[FastISel] Flush local value map on ever instruction" and dependent patches
This reverts commit cf1c774d6ace59c5adc9ab71b31e762c1be695b1.
This change caused several regressions in the gdb test suite - at least a sample of which was due to line zero instructions making breakpoints un-lined. I think they're worth investigating/understanding more (& possibly addressing) before moving forward with this change.
Revert "[FastISel] NFC: Clean up unnecessary bookkeeping" This reverts commit 3fd39d3694d32efa44242c099e923a7f4d982095.
Revert "[FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option" This reverts commit a474657e30edccd9e175d92bddeefcfa544751b2.
Revert "Remove static function unused after cf1c774." This reverts commit dc35368ccf17a7dca0874ace7490cc3836fb063f.
Revert "[lldb] Fix TestThreadStepOut.py after "Flush local value map on every instruction"" This reverts commit 53a14a47ee89dadb8798ca8ed19848f33f4551d5.
|
 | lldb/test/Shell/SymbolFile/NativePDB/load-pdb.cpp |
 | llvm/test/CodeGen/X86/membarrier.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll |
 | llvm/test/CodeGen/PowerPC/mcm-6.ll |
 | llvm/test/CodeGen/Mips/emergency-spill-slot-near-fp.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/simplestore.ll |
 | llvm/test/CodeGen/PowerPC/mcm-default.ll |
 | llvm/test/CodeGen/X86/pr32484.ll |
 | llvm/test/CodeGen/X86/pr32340.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll |
 | llvm/test/CodeGen/AArch64/arm64-elf-globals.ll |
 | llvm/test/CodeGen/X86/fast-isel-constant.ll |
 | llvm/test/DebugInfo/COFF/lines-bb-start.ll |
 | llvm/test/CodeGen/X86/inreg.ll |
 | llvm/test/CodeGen/ARM/fast-isel-call.ll |
 | llvm/test/CodeGen/PowerPC/elf-common.ll |
 | llvm/test/CodeGen/PowerPC/mcm-9.ll |
 | llvm/test/CodeGen/AArch64/cfguard-checks.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/overflt.ll |
 | llvm/test/CodeGen/ARM/fast-isel-ldr-str-thumb-neg-index.ll |
 | llvm/test/CodeGen/ARM/fast-isel-select.ll |
 | lldb/test/API/functionalities/thread/step_out/main.cpp |
 | llvm/test/CodeGen/Mips/Fast-ISel/logopm.ll |
 | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp |
 | llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll |
 | llvm/test/CodeGen/X86/pr32284.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/fastalloca.ll |
 | llvm/test/CodeGen/PowerPC/mcm-1.ll |
 | llvm/test/CodeGen/X86/pr32241.ll |
 | llvm/test/CodeGen/X86/fast-isel-select.ll |
 | llvm/test/CodeGen/X86/sse-intrinsics-fast-isel.ll |
 | lld/test/wasm/debug-removed-fn.ll |
 | lldb/test/Shell/SymbolFile/NativePDB/disassembly.cpp |
 | llvm/test/CodeGen/X86/avx512-mask-zext-bugfix.ll |
 | llvm/test/CodeGen/AArch64/swifterror.ll |
 | llvm/test/CodeGen/PowerPC/mcm-13.ll |
 | llvm/test/CodeGen/X86/fast-isel-call-cleanup.ll |
 | llvm/test/CodeGen/ARM/fast-isel.ll |
 | llvm/test/CodeGen/X86/volatile.ll |
 | llvm/test/DebugInfo/Mips/delay-slot.ll |
 | llvm/test/CodeGen/PowerPC/mcm-3.ll |
 | llvm/test/CodeGen/X86/crash-O0.ll |
 | llvm/test/CodeGen/ARM/fast-isel-intrinsic.ll |
 | llvm/test/CodeGen/X86/sink-local-value.ll |
 | llvm/include/llvm/CodeGen/FastISel.h |
 | llvm/test/CodeGen/Mips/Fast-ISel/fpcmpa.ll |
 | llvm/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll |
 | llvm/test/CodeGen/PowerPC/fast-isel-load-store.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/simplestorei.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/icmpa.ll |
 | llvm/test/CodeGen/X86/pr32256.ll |
 | llvm/test/DebugInfo/X86/fission-ranges.ll |
 | lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py |
 | llvm/test/CodeGen/ARM/swifterror.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/shftopm.ll |
 | llvm/test/CodeGen/X86/lvi-hardening-loads.ll |
 | llvm/test/CodeGen/X86/pr44749.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll |
 | llvm/test/CodeGen/ARM/fast-isel-vararg.ll |
 | llvm/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll |
 | llvm/test/DebugInfo/X86/prologue-stack.ll |
 | llvm/test/CodeGen/AArch64/large-stack.ll |
 | llvm/test/CodeGen/X86/atomic64.ll |
 | llvm/test/CodeGen/X86/atomic-unordered.ll |
 | llvm/test/CodeGen/AArch64/arm64-abi_align.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel.ll |
 | llvm/test/CodeGen/PowerPC/mcm-2.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-gv.ll |
 | llvm/test/CodeGen/X86/pr32345.ll |
 | llvm/test/CodeGen/X86/fast-isel-mem.ll |
Commit
6b3eecd22ab2afd16be412d19eed0e01f10e6cc8
by jezng[lld-macho] Extend PIE option handling
* Enable PIE by default if targeting 10.6 or above on x86-64. (The manpage says 10.7, but that actually applies only to i386, and in general varies based on the target platform. I didn't update the manpage because listing all the different behaviors would make for a pretty long description.) * Add support for `-no_pie` * Remove `HelpHidden` from `-pie`
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D92362
|
 | lld/test/MachO/x86-64-reloc-unsigned.s |
 | lld/MachO/Options.td |
 | lld/MachO/Driver.cpp |
Commit
78b0ec3d1c5cc198093bb03ecb86bca25fe570ca
by dblaikieAvoid redundant inline with LLVM_ATTRIBUTE_ALWAYS_INLINE
Fix MSVC warning when __forceinline is paired with inline.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D85264
|
 | llvm/include/llvm/IR/User.h |
 | llvm/include/llvm/Support/Compiler.h |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp |
Commit
8fee2ee9a689276eaea61d4c3f124aa80a81b6f7
by epastor[ms] [llvm-ml] Introduce command-line compatibility for ml.exe and ml64.exe
Switch to OptParser for command-line handling
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D90058
|
 | llvm/test/tools/llvm-ml/struct_errors.test |
 | llvm/test/tools/llvm-ml/builtin_types.asm |
 | llvm/test/tools/llvm-ml/macro_function.test |
 | llvm/test/tools/llvm-ml/alias.test |
 | llvm/test/tools/llvm-ml/named_operators.test |
 | llvm/test/tools/llvm-ml/feat00_override.asm |
 | llvm/test/tools/llvm-ml/macro_errors.asm |
 | llvm/test/tools/llvm-ml/struct_errors.asm |
 | llvm/test/tools/llvm-ml/rip-relative-addressing.test |
 | llvm/test/tools/llvm-ml/radix_errors.test |
 | llvm/test/tools/llvm-ml/proc.asm |
 | llvm/tools/llvm-ml/llvm-ml.cpp |
 | llvm/test/tools/llvm-ml/feat00.test |
 | llvm/test/tools/llvm-ml/expansion.test |
 | llvm/test/tools/llvm-ml/strings.test |
 | llvm/test/tools/llvm-ml/type_operators.test |
 | llvm/test/tools/llvm-ml/alias.asm |
 | llvm/test/tools/llvm-ml/line_continuations.test |
 | llvm/test/tools/llvm-ml/struct.asm |
 | llvm/test/tools/llvm-ml/repeat_directives.asm |
 | llvm/test/tools/llvm-ml/alias_errors.asm |
 | llvm/test/tools/llvm-ml/radix.asm |
 | llvm/test/tools/llvm-ml/strings.asm |
 | llvm/test/tools/llvm-ml/type_operators.asm |
 | llvm/test/tools/llvm-ml/lit.local.cfg |
 | llvm/test/tools/llvm-ml/dot_operator.test |
 | llvm/test/tools/llvm-ml/dot_operator.asm |
 | llvm/test/tools/llvm-ml/radix_errors.asm |
 | llvm/test/tools/llvm-ml/proc_frame.asm |
 | llvm/test/tools/llvm-ml/variable.test |
 | llvm/test/tools/llvm-ml/feat00.asm |
 | llvm/test/tools/llvm-ml/variable.asm |
 | llvm/test/tools/llvm-ml/basic.test |
 | llvm/test/tools/llvm-ml/radix.test |
 | llvm/test/tools/llvm-ml/strings_errors.test |
 | llvm/test/tools/llvm-ml/line_continuations.asm |
 | llvm/test/tools/llvm-ml/basic_data.asm |
 | llvm/test/tools/llvm-ml/named_operators.asm |
 | llvm/test/tools/llvm-ml/run.test |
 | llvm/test/tools/llvm-ml/rip-relative-addressing.asm |
 | llvm/test/tools/llvm-ml/builtin_types.test |
 | llvm/test/tools/llvm-ml/macro.test |
 | llvm/test/tools/llvm-ml/feat00_override.test |
 | llvm/test/tools/llvm-ml/proc.test |
 | llvm/test/tools/llvm-ml/size_inference.asm |
 | llvm/test/tools/llvm-ml/expansion.asm |
 | llvm/test/tools/llvm-ml/macro.asm |
 | llvm/test/tools/llvm-ml/run.asm |
 | llvm/test/tools/llvm-ml/macro_function.asm |
 | llvm/test/tools/llvm-ml/struct_alignment.asm |
 | llvm/test/tools/llvm-ml/strings_errors.asm |
 | llvm/tools/llvm-ml/Opts.td |
 | llvm/test/tools/llvm-ml/struct.test |
 | llvm/tools/llvm-ml/CMakeLists.txt |
 | llvm/test/tools/llvm-ml/size_inference.test |
 | llvm/test/tools/llvm-ml/alias_errors.test |
 | llvm/test/tools/llvm-ml/proc_frame.test |
 | llvm/test/tools/llvm-ml/macro_errors.test |
 | llvm/test/tools/llvm-ml/basic_data.test |
 | llvm/test/tools/llvm-ml/repeat_directives.test |
 | llvm/test/tools/llvm-ml/struct_alignment.test |
Commit
d67e58f23a8232ee17dba3cd8c5b4c1378ddbc59
by Louis Dionne[libc++abi] Don't try calling __libcpp_aligned_free when aligned allocation is disabled
See https://reviews.llvm.org/rGa78aaa1ad512#962077 for details.
|
 | libcxxabi/src/fallback_malloc.cpp |
Commit
a38ed62ea803a41c2e1f3fa12edbc176e474056f
by sbc[lld][WebAssembly] Feedback from D92038. NFC
Differential Revision: https://reviews.llvm.org/D92429
|
 | lld/wasm/Symbols.h |
 | lld/test/wasm/weak-undefined-pic.s |
Commit
1e4d6d1c1ff3f5a4d6e7dda053386ff411fd7de4
by mark.nauwelaerts[clang-format] Add new option PenaltyIndentedWhitespace
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D90534
|
 | clang/lib/Format/ContinuationIndenter.cpp |
 | clang/include/clang/Format/Format.h |
 | clang/lib/Format/Format.cpp |
 | clang/docs/ClangFormatStyleOptions.rst |
 | clang/unittests/Format/FormatTest.cpp |
Commit
ba4e45a0aa6596e156b27a620281d7befc5297fc
by thakis[gn build] (manually) port 8fee2ee9a68
|
 | llvm/utils/gn/secondary/llvm/tools/llvm-ml/BUILD.gn |
Commit
3fcb0eeb152beb4320c7632bcfa2b1e7c2e5ca00
by jezng[lld-macho] Emit STABS symbols for debugging, and drop debug sections
Debug sections contain a large amount of data. In order not to bloat the size of the final binary, we remove them and instead emit STABS symbols for `dsymutil` and the debugger to locate their contents in the object files.
With this diff, `dsymutil` is able to locate the debug info. However, we need a few more features before `lldb` is able to work well with our binaries -- e.g. having `LC_DYSYMTAB` accurately reflect the number of local symbols, emitting `LC_UUID`, and more. Those will be handled in follow-up diffs.
Note also that the STABS we emit differ slightly from what ld64 does. First, we emit the path to the source file as one `N_SO` symbol instead of two. (`ld64` emits one `N_SO` for the dirname and one of the basename.) Second, we do not emit `N_BNSYM` and `N_ENSYM` STABS to mark the start and end of functions, because the `N_FUN` STABS already serve that purpose. @clayborg recommended these changes based on his knowledge of what the debugging tools look for.
Additionally, this current implementation doesn't accurately reflect the size of function symbols. It uses the size of their containing sectioins as a proxy, but that is only accurate if `.subsections_with_symbols` is set, and if there isn't an `N_ALT_ENTRY` in that particular subsection. I think we have two options to solve this:
1. We can split up subsections by symbol even if `.subsections_with_symbols` is not set, but include constraints to ensure those subsections retain their order in the final output. This is `ld64`'s approach. 2. We could just add a `size` field to our `Symbol` class. This seems simpler, and I'm more inclined toward it, but I'm not sure if there are use cases that it doesn't handle well. As such I'm punting on the decision for now.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D89257
|
 | lld/MachO/OutputSegment.h |
 | lld/MachO/InputFiles.h |
 | lld/MachO/SyntheticSections.cpp |
 | lld/MachO/CMakeLists.txt |
 | lld/MachO/Writer.cpp |
 | lld/MachO/InputFiles.cpp |
 | lld/test/MachO/stabs.s |
 | lld/MachO/Dwarf.cpp |
 | lld/MachO/SyntheticSections.h |
 | lld/MachO/Dwarf.h |
 | lld/MachO/InputSection.h |
Commit
51629abce0e2f9d1376eb0b5070532a2bbec6766
by jezng[lld-macho] Emit local symbols in symtab; record metadata in LC_DYSYMTAB
Symbols of the same type must be laid out contiguously: following ld64's lead, we choose to emit all local symbols first, then external symbols, and finally undefined symbols. For each symbol type, the LC_DYSYMTAB load command will record the range (start index and total number) of those symbols in the symbol table.
This work was motivated by the fact that LLDB won't search for debug info if LC_DYSYMTAB says there are no local symbols (since STABS symbols are all local symbols). With this change, LLDB is now able to display the source lines at a given breakpoint when debugging our binaries.
Some tests had to be updated due to local symbol names now appearing in `llvm-objdump`'s output.
Reviewed By: #lld-macho, smeenai, clayborg
Differential Revision: https://reviews.llvm.org/D89285
|
 | lld/test/MachO/stabs.s |
 | lld/test/MachO/subsections-symbol-relocs.s |
 | lld/MachO/Writer.cpp |
 | lld/test/MachO/symtab.s |
 | lld/MachO/SyntheticSections.cpp |
 | lld/MachO/SyntheticSections.h |
 | lld/test/MachO/tlv.s |
Commit
d0c4be42e35d8cff069f91a45b76ea24187c233d
by jezng[lld-macho] Emit empty string as first entry of string table
ld64 emits string tables which start with a space and a zero byte. We match its behavior here since some tools depend on it.
Similar rationale as {D89561}.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D89639
|
 | lld/MachO/SyntheticSections.h |
 | lld/test/MachO/symtab.s |
Commit
b768d57b368781e6737c403e425bd835850f3a0a
by jezng[lld-macho] Add archive name and file modtime to STABS output
We should also set the modtime when running LTO. That will be done in a future diff, together with support for the `-object_path_lto` flag.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D91318
|
 | lld/MachO/SyntheticSections.cpp |
 | lld/MachO/DriverUtils.cpp |
 | lld/MachO/LTO.cpp |
 | lld/MachO/InputFiles.h |
 | lld/MachO/InputFiles.cpp |
 | lld/MachO/Driver.cpp |
 | lld/MachO/Driver.h |
 | lld/test/MachO/stabs.s |
Commit
78f6498cdcdb5a7644b1c32615cfe2fdfd9c2545
by jezng[lld-macho] Flesh out STABS implementation
This addresses a lot of the comments in {D89257}. Ideally it'd have been done in the same diff, but the commits in between make that difficult.
This diff implements: * N_GSYM and N_STSYM, the STABS for global and static symbols * Has the STABS reflect the section IDs of their referent symbols * Ensures we don't fail when encountering absolute symbols or files with no debug info * Sorts STABS symbols by file to minimize the number of N_OSO entries
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D92366
|
 | lld/test/MachO/stabs.s |
 | lld/MachO/InputFiles.h |
 | lld/MachO/InputFiles.cpp |
 | lld/MachO/SyntheticSections.h |
 | lld/MachO/SyntheticSections.cpp |
Commit
c7dbaec396ef98b8bc6acb7631d2919449986add
by jezng[lld-macho] Add isCodeSection()
This is the same logic that ld64 uses to determine which sections contain functions. This was added so that we could determine which STABS entries should be N_FUN.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D92430
|
 | lld/MachO/InputSection.cpp |
 | lld/MachO/SyntheticSections.cpp |
 | lld/MachO/InputSection.h |
 | lld/test/MachO/stabs.s |
Commit
abfd1a8b3bc5ad8516a83c3ae7ba9f16032525ad
by riddleriver[mlir][PDL] Add support for PDL bytecode and expose PDL support to OwningRewritePatternList
PDL patterns are now supported via a new `PDLPatternModule` class. This class contains a ModuleOp with the pdl::PatternOp operations representing the patterns, as well as a collection of registered C++ functions for native constraints/creations/rewrites/etc. that may be invoked via the pdl patterns. Instances of this class are added to an OwningRewritePatternList in the same fashion as C++ RewritePatterns, i.e. via the `insert` method.
The PDL bytecode is an in-memory representation of the PDL interpreter dialect that can be efficiently interpreted/executed. The representation of the bytecode boils down to a code array(for opcodes/memory locations/etc) and a memory buffer(for storing attributes/operations/values/any other data necessary). The bytecode operations are effectively a 1-1 mapping to the PDLInterp dialect operations, with a few exceptions in cases where the in-memory representation of the bytecode can be more efficient than the MLIR representation. For example, a generic `AreEqual` bytecode op can be used to represent AreEqualOp, CheckAttributeOp, and CheckTypeOp.
The execution of the bytecode is split into two phases: matching and rewriting. When matching, all of the matched patterns are collected to avoid the overhead of re-running parts of the matcher. These matched patterns are then considered alongside the native C++ patterns, which rewrite immediately in-place via `RewritePattern::matchAndRewrite`, for the given root operation. When a PDL pattern is matched and has the highest benefit, it is passed back to the bytecode to execute its rewriter.
Differential Revision: https://reviews.llvm.org/D89107
|
 | mlir/tools/mlir-opt/mlir-opt.cpp |
 | mlir/lib/Rewrite/PatternApplicator.cpp |
 | mlir/lib/Rewrite/ByteCode.cpp |
 | mlir/test/lib/Rewrite/TestPDLByteCode.cpp |
 | mlir/include/mlir/Rewrite/PatternApplicator.h |
 | mlir/include/mlir/IR/PatternMatch.h |
 | mlir/lib/IR/Operation.cpp |
 | mlir/lib/IR/PatternMatch.cpp |
 | mlir/include/mlir/IR/BlockSupport.h |
 | mlir/include/mlir/IR/Operation.h |
 | mlir/lib/IR/Block.cpp |
 | mlir/lib/Rewrite/FrozenRewritePatternList.cpp |
 | mlir/test/lib/CMakeLists.txt |
 | mlir/include/mlir/IR/OperationSupport.h |
 | mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td |
 | mlir/test/lib/Rewrite/CMakeLists.txt |
 | mlir/lib/Rewrite/ByteCode.h |
 | mlir/tools/mlir-opt/CMakeLists.txt |
 | mlir/include/mlir/IR/StorageUniquerSupport.h |
 | mlir/include/mlir/Rewrite/FrozenRewritePatternList.h |
 | mlir/lib/Rewrite/CMakeLists.txt |
 | mlir/test/Rewrite/pdl-bytecode.mlir |
 | mlir/test/lib/Transforms/TestLinalgTransforms.cpp |
Commit
c64037b784aeae63b1863ee1abd5601c2c6a8102
by epastor[ms] [llvm-ml] Support command-line defines
Enable command-line defines as textmacros
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D90059
|
 | llvm/tools/llvm-ml/llvm-ml.cpp |
 | llvm/test/tools/llvm-ml/command_line_defines.asm |
 | llvm/lib/MC/MCParser/MasmParser.cpp |
 | llvm/include/llvm/MC/MCParser/MCAsmParser.h |
 | llvm/tools/llvm-ml/Opts.td |
Commit
ea7b07187b273059d503b3b35539668d3c1f5412
by aeubanks[gn build] Manually port 8fee2ee9
|
 | llvm/utils/gn/secondary/llvm/tools/llvm-ml/BUILD.gn |
Commit
ec13b391170e5984894e1c8635a6964e79572205
by aeubanks[gn build] Format all gn files
$ git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
|
 | llvm/utils/gn/secondary/clang/test/BUILD.gn |
 | llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn |
 | llvm/utils/gn/secondary/clang-tools-extra/clang-tidy/concurrency/BUILD.gn |
Commit
e8b816ad19c728e1c8393df92d7e87b4bc9a38cc
by llvmgnsyncbot[gn build] Port 3fcb0eeb152
|
 | llvm/utils/gn/secondary/lld/MachO/BUILD.gn |
Commit
04424c69bc7b98e1bbd0480ed5cdc251c6c94521
by Tony.Tye[NFC][AMDGPU] AMDGPU code object V4 ABI documentation
- Documantation for AMDGPU code object V4. - Documentation clarification for code object V2 and V3. - Documentation for the clang-offload-bundler. - Numerous other documentation clarifications.
Change-Id: I338b327cc9e75da6c987b7e081b496402a5a020e
Differential Revision: https://reviews.llvm.org/D92434
|
 | llvm/docs/AMDGPUUsage.rst |
 | clang/docs/ClangOffloadBundler.rst |
Commit
6c3fa97d8a628541c82d8981aabefcb2dcb29f17
by Jessica Paquette[AArch64][GlobalISel] Select Bcc when it's better than TB(N)Z
Instead of falling back to selecting TB(N)Z when we fail to select an optimized compare against 0, select Bcc instead.
Also simplify selectCompareBranch a little while we're here, because the logic was kind of hard to follow.
At -O0, this is a 0.1% geomean code size improvement for CTMark.
A simple example of where this can kick in is here: https://godbolt.org/z/4rra6P
In the example above, GlobalISel currently produces a subs, cset, and tbnz. SelectionDAG, on the other hand, just emits a compare and b.le.
Differential Revision: https://reviews.llvm.org/D92358
|
 | llvm/test/CodeGen/AArch64/GlobalISel/tbnz-slt.mir |
 | llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp |
 | llvm/test/CodeGen/AArch64/GlobalISel/opt-and-tbnz-tbz.mir |
Commit
19bdc8e5a307f6eb209d4f91620d70bd2f80219e
by leonardchan[llvm] Fix for failing test from fdbd84c6c819d4462546961f6086c1524d5d5ae8
When handling a DSOLocalEquivalent operand change:
- Remove assertion checking that the `To` type and current type are the same type. This is not always a requirement. - Add a missing bitcast from an old DSOLocalEquivalent to the type of the new one.
|
 | llvm/lib/IR/Constants.cpp |
Commit
07ab597bb0356ceae0195e4d66205e7eb2d07b7e
by thakis[lld/mac] Fix issues around thin archives
- most importantly, fix a use-after-free when using thin archives, by putting the archive unique_ptr to the arena allocator. This ports D65565 to MachO
- correctly demangle symbol namess from archives in diagnostics
- add a test for thin archives -- it finds this UaF, but only when running it under asan (it also finds the demangling fix)
- make forceLoadArchive() use addFile() with a bool to have the archive loading code in fewer places. no behavior change; matches COFF port a bit better
Differential Revision: https://reviews.llvm.org/D92360
|
 | lld/MachO/InputFiles.cpp |
 | lld/MachO/Symbols.cpp |
 | lld/MachO/Driver.cpp |
 | lld/MachO/Symbols.h |
 | lld/test/MachO/thin-archive.s |
Commit
e27e3ba9c9d8e3f25d4b03a71cdb6b47cbff2c8b
by i[RISCVAsmParser] Allow a SymbolRef operand to be a complex expression
So that instructions like `lla a5, (0xFF + end) - 4` (supported by GNU as) can be parsed.
Add a missing test that an operand like `foo + foo` is not allowed.
Reviewed By: jrtc27
Differential Revision: https://reviews.llvm.org/D92293
|
 | llvm/test/MC/RISCV/rvi-pseudos.s |
 | llvm/test/MC/RISCV/rvi-pseudos-invalid.s |
 | llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp |
Commit
adfefa555333b6e276150f6d9adb6f5bb910b103
by Vitaly Buka[NFC] Extract ForEachDVT
|
 | compiler-rt/lib/lsan/lsan_common.cpp |
 | compiler-rt/lib/msan/msan_thread.cpp |
 | compiler-rt/lib/sanitizer_common/sanitizer_tls_get_addr.h |
Commit
8a300deb3e4602eee7745db5281b5ac728e44971
by Vitaly Buka[sanitizer] Make DTLS_on_tls_get_addr signal safer
Avoid relocating DTV table and use linked list of mmap-ed pages.
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D92428
|
 | compiler-rt/lib/sanitizer_common/sanitizer_tls_get_addr.cpp |
 | compiler-rt/lib/sanitizer_common/sanitizer_tls_get_addr.h |
 | compiler-rt/test/sanitizer_common/TestCases/Linux/resize_tls_dynamic.cpp |
Commit
91843f79498dac6c2de734ac41a2ab1eb3676663
by noreplygithub actions: Update branch_sync to push to main
|
 | .github/workflows/main-branch-sync.yml |
Commit
1f40d60a3b7f310ff3f77bb8643a27d979a703cb
by richardRemove CXXBasePaths::found_decls and simplify and modernize its only caller.
This function did not satisfy its documented contract: it only considered the first lookup result on each base path, not all lookup results. It also performed unnecessary memory allocations.
This change results in a minor change to our representation: we now include overridden methods that are found by any derived-to-base path (not involving another override) in the list of overridden methods for a function, rather than filtering out functions from bases that are both direct virtual bases and indirect virtual bases for which the indirect virtual base path contains another override for the function. (That filtering rule is part of the class-scope name lookup rules, and doesn't really have much to do with enumerating overridden methods.) The users of the list of overridden methods do not appear to rely on this filtering having happened, and it's simpler to not do it.
|
 | clang/include/clang/AST/CXXInheritance.h |
 | clang/lib/AST/CXXInheritance.cpp |
 | clang/lib/Sema/SemaDecl.cpp |
Commit
c82f002cea304be505f14af70dce25ad149ba29f
by Jessica Paquette[AArch64][GlobalISel] Don't write to WZR in non-flag-setting G_BRCOND case
We are avoiding writing to WZR just about everywhere else.
Also update the code to use MachineIRBuilder for the sake of consistency.
We also didn't have a GlobalISel testcase for this path, so add a simple one now.
Differential Revision: https://reviews.llvm.org/D90626
|
 | llvm/test/CodeGen/AArch64/GlobalISel/speculative-hardening-brcond.mir |
 | llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp |
Commit
31e03a9bd9561e6b21e4e1f5b80a8316de624876
by i[WebAssembly] Rename --lto-no-new-pass-manager to --no-lto-new-pass-manager
In addition, disallow `-lto-new-pass-manager` (see D79371).
Note: the ELF port has also adopted --no-lto-new-pass-manager
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D92422
|
 | lld/test/wasm/lto/new-pass-manager.ll |
 | lld/wasm/Options.td |
 | lld/wasm/Driver.cpp |
Commit
bdd6718bef6f2b1f74c346b239debd6c511e4265
by Vitaly Buka[NFC] Disable new test from D92428 on PPC TSAN
|
 | compiler-rt/test/sanitizer_common/TestCases/Linux/resize_tls_dynamic.cpp |
Commit
b6b0a80eb93cf1547974e610d5fac261764570f5
by Jessica PaquetteFix typo in testcase runline that got there because I have very bad hands
llvm/test/CodeGen/AArch64/GlobalISel/speculative-hardening-brcond.mir had a slash in its runline.
|
 | llvm/test/CodeGen/AArch64/GlobalISel/speculative-hardening-brcond.mir |
Commit
1e91803c671a105f1eabce0e496766b512242f1d
by leonardchanRecommit "[clang][Fuchsia] Add relative-vtables multilib"
This recommits fdbd84c6c819d4462546961f6086c1524d5d5ae8 whose initial build issues were fixed in 19bdc8e5a307f6eb209d4f91620d70bd2f80219e.
|
 | clang/lib/Driver/ToolChains/Fuchsia.cpp |
 | clang/test/Driver/fuchsia.cpp |
 | clang/cmake/caches/Fuchsia-stage2.cmake |
 | clang/test/Driver/Inputs/basic_fuchsia_tree/lib/x86_64-fuchsia/c++/relative-vtables/libc++.so |
 | clang/test/Driver/Inputs/basic_fuchsia_tree/lib/aarch64-fuchsia/c++/relative-vtables/libc++.so |
 | clang/test/Driver/Inputs/basic_fuchsia_tree/lib/aarch64-fuchsia/c++/relative-vtables+noexcept/libc++.so |
 | clang/test/Driver/Inputs/basic_fuchsia_tree/lib/x86_64-fuchsia/c++/relative-vtables+noexcept/libc++.so |
Commit
8b8088ac6ca977fbce52abd50ac88ecbe08d9cb2
by dschuff[lld] Use -1 as tombstone value for discarded code ranges
Under existing behavior discarded functions are relocated to have the start pc 0. This causes problems when debugging as they typically overlap the first function and lldb symbol resolution frequently chooses a discarded function instead of the correct one. Using the value -1 or -2 (depending on which DWARF section we are writing) is sufficient to prevent lldb from resolving to these symbols.
Reviewed By: MaskRay, yurydelendik, sbc100
Differential Revision: https://reviews.llvm.org/D91803
|
 | lld/wasm/InputChunks.cpp |
 | lld/wasm/InputChunks.h |
 | lld/wasm/InputFiles.h |
 | lld/test/wasm/debug-removed-fn.ll |
 | lld/test/wasm/debuginfo.test |
 | lld/wasm/InputFiles.cpp |
Commit
405ea2b93d96f7014e60eeb84040b35372d448e7
by jianzhouzh[msan] Replace 8 by kShadowTLSAlignment
Reviewed-by: eugenis
Differential Revision: https://reviews.llvm.org/D92275
|
 | llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp |
Commit
fa20ab7b1bb2c77570f46888fe46e6ecf7aeafc6
by riddleriver[mlir][PDL] Add append specialization for ByteCode OpCode to fix GCC5 build
|
 | mlir/lib/Rewrite/ByteCode.cpp |