Commit
83e60f5a554d2f531b17875e835eab0cbb487211
by thakis[lld/mac] Add --reproduce option
This adds support for ld.lld's --reproduce / lld-link's /reproduce: flag to the MachO port. This flag can be added to a link command to make the link write a tar file containing all inputs to the link and a response file containing the link command. This can be used to reproduce the link on another machine, which is useful for sharing bug report inputs or performance test loads.
Since the linker is usually called through the clang driver and adding linker flags can be a bit cumbersome, setting the env var `LLD_REPRODUCE=foo.tar` triggers the feature as well.
The file response.txt in the archive can be used with `ld64.lld.darwinnew $(cat response.txt)` as long as the contents are smaller than the command-line limit, or with `ld64.lld.darwinnew @response.txt` once D92149 is in.
The support in this patch is sufficient to create a tar file for Chromium's base_unittests that can link after unpacking on a different machine.
Differential Revision: https://reviews.llvm.org/D92274
|
 | lld/test/MachO/reproduce.s |
 | lld/MachO/Driver.cpp |
 | lld/ELF/DriverUtils.cpp |
 | lld/Common/Reproduce.cpp |
 | lld/MachO/Driver.h |
 | lld/MachO/DriverUtils.cpp |
 | lld/MachO/InputFiles.cpp |
 | lld/MachO/Options.td |
 | lld/MachO/InputFiles.h |
Commit
9c2b2952e422ba71c2afa9f6bb63ebf69fa5b702
by llvm-dev[InstCombine][X86] Add addsub tests showing failure to simplify demandedelts (PR46277)
|
 | llvm/test/Transforms/InstCombine/X86/x86-addsub.ll |
Commit
c3d484673fa70bb4b2284689db76d36bbdf12f38
by david.spickett[llvm-objdump] Require x86 target for mcpu/attr test
This fixes test failure on clang-cmake-armv7-quick bot with change c2ead57ccf74900901fdda1cd0fbe9a7a0d1297a.
This bot only builds Arm/AArch64 targets.
|
 | llvm/test/tools/llvm-objdump/mattr-mcpu-help.test |
Commit
9c49dcc356eb4c59fc1353bbbaae6d3a56a656c1
by aqjune[ConstantFold] Don't fold and/or i1 poison to poison (NFC)
.. because it causes miscompilation when combined with select i1 -> and/or.
It is the select fold which is incorrect; but it is costly to disable the fold, so hack this one.
D92270
|
 | llvm/test/Transforms/InstSimplify/ConstProp/poison.ll |
 | llvm/lib/IR/ConstantFold.cpp |
Commit
8e504615e9f1b27c06237a56ee786a16568851f1
by aqjune[LangRef] missing link, minor fix
|
 | llvm/docs/LangRef.rst |
Commit
a0d7406ae800c45dd9cb438c7ae1f55329d198e2
by pctammela[LLDB/Lua] add support for one-liner breakpoint callback
These callbacks are set using the following: breakpoint command add -s lua -o "print('hello world!')"
The user supplied script is executed as: function (frame, bp_loc, ...) <body> end
So the local variables 'frame', 'bp_loc' and vararg are all accessible. Any global variables declared will persist in the Lua interpreter. A user should never hold 'frame' and 'bp_loc' in a global variable as these userdatas are context dependent.
Differential Revision: https://reviews.llvm.org/D91508
|
 | lldb/bindings/lua/lua-swigsafecast.swig |
 | lldb/source/Plugins/ScriptInterpreter/Lua/Lua.cpp |
 | lldb/source/Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.cpp |
 | lldb/source/Plugins/ScriptInterpreter/Lua/Lua.h |
 | lldb/source/Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h |
 | lldb/bindings/lua/lua-wrapper.swig |
 | lldb/bindings/lua/lua.swig |
 | lldb/unittests/ScriptInterpreter/Lua/LuaTests.cpp |
 | lldb/test/Shell/ScriptInterpreter/Lua/breakpoint_oneline_callback.test |
Commit
234a5297aa00648cba00347f24e9e9b99abde289
by gribozavrAdd 'asserts' requiremnt to test/CodeGen/ARM/cortex-a57-misched-mla.mir
'-debug-only=machine-scheduler' only works when asserts are enabled.
|
 | llvm/test/CodeGen/ARM/cortex-a57-misched-mla.mir |
Commit
bfd2c216ea8ef09f8fb1f755ca2b89f86f74acbb
by spatel[IR][LoopRotate] avoid leaving phi with no operands (PR48296)
https://llvm.org/PR48296 shows an example where we delete all of the operands of a phi without actually deleting the phi, and that is currently considered invalid IR. The reduced test included here would crash for that reason.
A suggested follow-up is to loosen the assert to allow 0-operand phis in unreachable blocks.
Differential Revision: https://reviews.llvm.org/D92247
|
 | llvm/include/llvm/IR/BasicBlock.h |
 | llvm/lib/IR/BasicBlock.cpp |
 | llvm/test/Transforms/LoopRotate/phi-empty.ll |
Commit
c0e4020c927134b1dfe4181f54147af95f482558
by thakis[lld-macho] Implement -fatal_warnings
Differential Revision: https://reviews.llvm.org/D91894
|
 | lld/MachO/Options.td |
 | lld/test/MachO/fatal-warnings.s |
 | lld/MachO/DriverUtils.cpp |
Commit
d5aaf6021476243de73f8eb8a7479a2288582225
by Ben.Dunbobbin[windows-itanium] handle dllimport/export code paths separately and share with PS4
Similar to Windows Itanium, PS4 is also an Itanium C++ ABI variant which shares the goal of semantic compatibility with Microsoft C++ code that uses dllimport/export.
This change introduces a new function to determine from the triple if an environment aims for compatibility with MS C++ code w.r.t to these attributes and guards the relevant code paths using that function.
Differential Revision: https://reviews.llvm.org/D90299
|
 | clang/lib/Sema/SemaDecl.cpp |
 | clang/test/CodeGenCXX/windows-itanium-dllexport.cpp |
 | clang/lib/Sema/SemaTemplate.cpp |
 | clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp |
 | clang/test/SemaCXX/dllimport.cpp |
 | clang/test/SemaCXX/dllexport.cpp |
 | clang/test/Sema/dllimport.c |
 | clang/lib/Sema/SemaDeclAttr.cpp |
 | clang/include/clang/Basic/TargetInfo.h |
 | clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp |
 | clang/lib/Sema/SemaDeclCXX.cpp |
Commit
78c71187465a8e877d2e07d462b45a19363fb782
by nicolas.vasilache[mlir] Make mlir-cpu-runner depend on native instead of X86
|
 | mlir/tools/mlir-cpu-runner/CMakeLists.txt |
Commit
355aee3dcd441461a6da6e56c43dc1bd81c79f31
by spatelRevert "[IR][LoopRotate] avoid leaving phi with no operands (PR48296)"
This reverts commit bfd2c216ea8ef09f8fb1f755ca2b89f86f74acbb. This appears to be causing stage2 msan failures on buildbots: FAIL: LLVM :: Transforms/SimplifyCFG/X86/bug-25299.ll (65872 of 71835) ******************** TEST 'LLVM :: Transforms/SimplifyCFG/X86/bug-25299.ll' FAILED ******************** Script: -- : 'RUN: at line 1'; /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/opt < /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/Transforms/SimplifyCFG/X86/bug-25299.ll -simplifycfg -S | /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/Transforms/SimplifyCFG/X86/bug-25299.ll -- Exit Code: 2 Command Output (stderr): -- ==87374==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x9de47b6 in getBasicBlockIndex /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/IR/Instructions.h:2749:5 #1 0x9de47b6 in simplifyCommonResume /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:4112:23 #2 0x9de47b6 in simplifyResume /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:4039:12 #3 0x9de47b6 in (anonymous namespace)::SimplifyCFGOpt::simplifyOnce(llvm::BasicBlock*) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6330:16 #4 0x9dcca13 in run /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6358:16 #5 0x9dcca13 in llvm::simplifyCFG(llvm::BasicBlock*, llvm::TargetTransformInfo const&, llvm::SimplifyCFGOptions const&, llvm::SmallPtrSetImpl<llvm::BasicBlock*>*) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6369:8 #6 0x974643d in iterativelySimplifyCFG(
|
 | llvm/lib/IR/BasicBlock.cpp |
 | llvm/include/llvm/IR/BasicBlock.h |
 | llvm/test/Transforms/LoopRotate/phi-empty.ll |
Commit
e0e7bbeb545516c50a0354efc34d329453558c9c
by Raphael Isemann[lldb] Always include template arguments that have their default value in the internal type name
Our type formatters/summaries match on the internal type name we generate in LLDB for Clang types.
These names were generated using Clang's default printing policy. However Clang's default printing policy got tweaked over the last month to make the generated type names more readable (by for example excluding inline/anonymous namespaces and removing template arguments that have their default value). This broke the formatter system where LLDB's matching logic now no longer can format certain types as the new type names generated by Clang's default printing policy no longer match the type names that LLDB/the user specified.
I already introduced LLDB's own type printing policy and fixed the inline/anonymous namespaces in da121fff1184267a405f81a87f7314df2d474e1c (just to get the test suite passing again).
This patch is restoring the old type printing behaviour where always include the template arguments in the internal type name (even if they match the default args). This should get template type formatters/summaries working again in the rare situation where we do know template default arguments within LLDB. This can only happen when either having a template that was parsed in the expression parser or when we get type information from a C++ module.
The Clang change that removed defaulted template arguments from Clang's printing policy was e7f3e2103cdb567dda4fd52f81bf4bc07179f5a8
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D92311
|
 | lldb/test/API/lang/cpp/default-template-args/Makefile |
 | lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py |
 | lldb/test/API/lang/cpp/default-template-args/main.cpp |
 | lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp |
Commit
1dc38f8cfbbc4cce12f8416a1e51d38285e6872f
by spatel[IR] improve code comment/logic in removePredecessor(); NFC
This was suggested in the post-commit review of ce134da4b1.
|
 | llvm/lib/IR/BasicBlock.cpp |
Commit
8fcc8c3148d087e9190cf6858c80f6306b3a93e5
by llvm-dev[X86] Add vbmi2 test coverage for vector rotations
We should be using the funnel shift instructions for vXi16 types.
|
 | llvm/test/CodeGen/X86/vector-fshr-rot-512.ll |
 | llvm/test/CodeGen/X86/vector-fshr-rot-sub128.ll |
 | llvm/test/CodeGen/X86/vector-fshl-rot-128.ll |
 | llvm/test/CodeGen/X86/vector-fshr-rot-256.ll |
 | llvm/test/CodeGen/X86/vector-fshl-rot-512.ll |
 | llvm/test/CodeGen/X86/vector-rotate-512.ll |
 | llvm/test/CodeGen/X86/vector-fshr-rot-128.ll |
 | llvm/test/CodeGen/X86/vector-rotate-128.ll |
 | llvm/test/CodeGen/X86/vector-rotate-256.ll |
 | llvm/test/CodeGen/X86/vector-fshl-rot-256.ll |
 | llvm/test/CodeGen/X86/vector-fshl-rot-sub128.ll |
Commit
4db1de3a77939c0ec409e4e2c01f27be639f20a3
by flo[ConstraintElimination] Add additional GEP decomposition tests.
|
 | llvm/test/Transforms/ConstraintElimination/geps.ll |
Commit
cbbd7021f176d1344fb4d71d492ccc6017f98151
by craig.topper[RISCV] Only combine (or (GREVI x, shamt), x) -> GORCI if shamt is a power of 2.
GORCI performs an OR between each stage. So we need to ensure only one stage is active before doing this combine.
Initial attempts at finding a test case for this failed due to the order things get combined. It's most likely that we'll form one stage of GREVI then combine to GORCI before the two stages of GREVI are able to be formed and combined with each other to form a multi stage GREVI.
Differential Revision: https://reviews.llvm.org/D92289
|
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
Commit
25c8fbb3d92fd8321af59bb370e901f0e229b1c9
by i[X86] Don't emit R_X86_64_[REX_]GOTPCRELX for a GOT load with an offset
clang may produce `movl x@GOTPCREL+4(%rip), %eax` when loading the high 32 bits of the address of a global variable in -fpic/-fpie mode.
If assembled by GNU as, the fixup emits R_X86_64_GOTPCRELX with an addend != -4. The instruction loads from the GOT entry with an offset and thus it is incorrect to relax the instruction.
This patch does not emit a relaxable relocation for a GOT load with an offset because R_X86_64_[REX_]GOTPCRELX do not make sense for instructions which cannot be relaxed. The result is good enough for LLD to work. GNU ld relaxes mov+GOTPCREL as well, but it suppresses the relaxation if addend != -4.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D92114
|
 | llvm/test/MC/X86/gotpcrelx.s |
 | llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp |
 | llvm/test/MC/ELF/got-relaxed-rex.s |
Commit
589e10f8586e45ebe9b6409dd29d62f2f40ab52f
by i[ELF] Don't relax R_X86_64_GOTPCRELX if addend != -4
clang may produce `movl x@GOTPCREL+4(%rip), %eax` when loading the high 32 bits of the address of a global variable in -fpic/-fpie mode.
If assembled by GNU as, the fixup emits an R_X86_64_GOTPCRELX with an addend != -4. The instruction loads from the GOT entry with an offset and thus it is incorrect to relax the instruction.
If assembled by the integrated assembler, we emit R_X86_64_GOTPCREL for relocations that definitely cannot be relaxed (D92114), so this patch is not needed.
This patch disables the relaxation, which is compatible with the implementation in GNU ld ("Add R_X86_64_[REX_]GOTPCRELX support to gas and ld").
Reviewed By: grimar, jhenderson
Differential Revision: https://reviews.llvm.org/D91993
|
 | lld/test/ELF/x86-64-gotpc-offset.s |
 | lld/ELF/Arch/X86_64.cpp |
Commit
76d1026b59bd04bd31645ab37dd82d1d89daa6d9
by craig.topper[RISCV] Custom legalize bswap/bitreverse to GREVI with Zbp extension to enable them to combine with other GREVI instructions
This enables bswap/bitreverse to combine with other GREVI patterns or each other without needing to add more special cases to the DAG combine or new DAG combines.
I've also enabled the existing GREVI combine for GREVIW so that it can pick up the i32 bswap/bitreverse on RV64 after they've been type legalized to GREVIW.
Differential Revision: https://reviews.llvm.org/D92253
|
 | llvm/test/CodeGen/RISCV/rv64Zbp.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
 | llvm/test/CodeGen/RISCV/rv32Zbp.ll |
 | llvm/lib/Target/RISCV/RISCVInstrInfoB.td |
Commit
9eb2c0113dfe2c1054e524122ca0e17ad552bb01
by spatel[IR][LoopRotate] remove assertion that phi must have at least one operand
This was suggested in D92247 - I initially committed an alternate fix ( bfd2c216ea ) to avoid the crash/assert shown in https://llvm.org/PR48296 , but that was reverted because it caused msan failures on other tests. We can try to revive that patch using the test included here, but I do not have an immediate plan to isolate that problem.
|
 | llvm/lib/IR/Verifier.cpp |
 | llvm/test/Transforms/LoopRotate/phi-empty.ll |
Commit
bfc4f29f46b4961c0532cf734f5d15015b4f7120
by craig.topper[RISCV] Combine (GORCI (GORCI x, C2), C1) -> (GORCI x, C1|C2).
Unlike GREVI, GORCI stages can't be undone, but they are redundant if done more than once.
Differential Revision: https://reviews.llvm.org/D92295
|
 | llvm/test/CodeGen/RISCV/rv64Zbp.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
 | llvm/test/CodeGen/RISCV/rv32Zbp.ll |
Commit
1b723a955da04d5a4fc7953c86045b8ef6da2881
by vyng[sanitizer] Disable use_tls_dynamic on on-Android x86 Linux.
https://bugs.chromium.org/p/chromium/issues/detail?id=1153421
Differential Revision: https://reviews.llvm.org/D92273
|
 | compiler-rt/test/lsan/TestCases/Linux/use_tls_dynamic.cpp |
Commit
7a91794d5b261bc87991d5acce9fa503e9a4f269
by praveen[Flang][OpenMP] Add semantic checks for OpenMP Private clause.
Add the semantic checks for the OpenMP 4.5 - 2.15.3.3 Private clause.
1. Pointers with the INTENT(IN) attribute may not appear in a private clause. 2. Variables that appear in namelist statements may not appear in a private clause. A flag 'InNamelist' is added to the Symbol::Flag to identify the symbols in Namelist statemnts.
Test cases : omp-private01.f90, omp-private02.f90
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D90210
|
 | flang/test/Semantics/omp-private01.f90 |
 | flang/include/flang/Semantics/symbol.h |
 | flang/lib/Semantics/check-omp-structure.h |
 | flang/lib/Semantics/resolve-names.cpp |
 | flang/test/Semantics/omp-private02.f90 |
 | flang/lib/Semantics/check-omp-structure.cpp |
 | flang/lib/Semantics/resolve-directives.cpp |
Commit
70eb2ce395be1fe39ceede6719aa667658d1e5a3
by gabor.marton[ASTImporter] Support import of CXXDeductionGuideDecl
CXXDeductionGuideDecl is a FunctionDecl, but its constructor should be called appropriately, at least to set the kind variable properly.
Differential Revision: https://reviews.llvm.org/D92109
|
 | clang/unittests/AST/ASTImporterTest.cpp |
 | clang/lib/AST/ASTImporter.cpp |
Commit
abfbc5579bd4507ae286d4f29f8a157de0629372
by kevin.neal[FPEnv] clang should get from the AST the metadata for constrained FP builtins
Currently clang is not correctly retrieving from the AST the metadata for constrained FP builtins. This patch fixes that for the non-target specific builtins.
Differential Revision: https://reviews.llvm.org/D92122
|
 | clang/test/CodeGen/constrained-math-builtins.c |
 | clang/test/CodeGen/strictfp_fpclassify.c |
 | clang/test/CodeGen/builtin_float_strictfp.c |
 | clang/lib/CodeGen/CGBuiltin.cpp |
Commit
ee073c798515e56b23463391a7b40d5ee6527337
by benicsbalazs[analyzer][StdLibraryFunctionsChecker] Fix typos in summaries of mmap and mmap64
The fd parameter of ``` void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) ``` should be constrained to the range [0, IntMax] as that is of type int. Constraining to the range [0, Off_tMax] would result in a crash as that is of a signed type with the value of 0xff..f (-1).
The crash would happen when we try to apply the arg constraints. At line 583: assert(Min <= Max), as 0 <= -1 is not satisfied
The mmap64 is fixed for the same reason.
Reviewed By: martong, vsavchenko
Differential Revision: https://reviews.llvm.org/D92307
|
 | clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp |
 | clang/test/Analysis/std-c-library-posix-crash.c |
Commit
bc7b2688d6762687ab4ec103d214ce5bb5d4210f
by zarkoAdd -fintegrated-as to second invocation of clang in test case.
|
 | clang/test/Driver/report-stat.c |
Commit
6fe610535f4e0654766a1ace6acafc22150c951d
by marukawa[VE] Clean check routines of branch types
Previously, these check routines accepted non-generatble instructions. This time, I clean them and add assert for those non-generatable instructions.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D92254
|
 | llvm/lib/Target/VE/VEInstrInfo.cpp |
 | llvm/test/CodeGen/VE/Scalar/br_analyze.ll |
Commit
6834b3d6d52a4083113eea52e2afb4d2c915602c
by marukawa[VE] Optimize prologue/epilogue instructions about GOT
Optimize prologue/epilogue instructions if a given function use GOT but do not call other functions by eliminating FP. Previously, we had wrong implementations taken from other architectures. Update regression tests also.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D92313
|
 | llvm/test/CodeGen/VE/Scalar/br_jt.ll |
 | llvm/test/CodeGen/VE/Scalar/pic_access_static_data.ll |
 | llvm/test/CodeGen/VE/Scalar/pic_access_data.ll |
 | llvm/test/CodeGen/VE/Scalar/stackframe_nocall.ll |
 | llvm/lib/Target/VE/VEISelLowering.cpp |
 | llvm/test/CodeGen/VE/Scalar/function_prologue_epilogue.ll |
Commit
f6150aa41a48ac8b5372fe4d6ccdfff96e432431
by joe.ellis[SelectionDAGBuilder] Update signature of `getRegsAndSizes()`.
The mapping between registers and relative size has been updated to use TypeSize to account for the size of scalable EVTs.
The patch is a NFCI, if not for the fact that with this change the function `getUnderlyingArgRegs` does not raise a warning for implicit conversion of `TypeSize` to `unsigned` when generating machine code from the test added to the patch.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D92096
|
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h |
 | llvm/test/CodeGen/AArch64/sdag-no-typesize-warnings-regandsizes.ll |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp |
Commit
3d872cbc2fd3d7ff43b1058da03a91bea51414c7
by marukawa[VE][NFC] Update comments
Update comments. I forgot to update it previously when I modified code.
|
 | llvm/lib/Target/VE/VEFrameLowering.cpp |
Commit
8ca484b94680a2b379722c6e7a62350b12c969c6
by llvm-dev[InstCombine][X86] Add addsub PR46277 test case
Also fix a copy+paste typo in the elts_addsub_v4f32 demanded elts test from the godbolt reference
|
 | llvm/test/Transforms/InstCombine/X86/x86-addsub.ll |
Commit
7c4555f60d96d8a3ed35d74dab7e591dacc24b8d
by i[PowerPC] Delete remnant Darwin code in PPCAsmParser
Continue the work started at D50989. The code has been long dead since the triple has been removed (D75494).
Reviewed By: nickdesaulniers, void
Differential Revision: https://reviews.llvm.org/D91836
|
 | llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp |
 | llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp |
Commit
64fa8cce225f7d8bd499e3a99caa850b764ff109
by hoy[CSSPGO] Pseudo probe instrumentation pass
This change introduces a pseudo probe instrumentation pass for block instrumentation. Please refer to https://reviews.llvm.org/D86193 for the whole story.
Given the following LLVM IR:
``` define internal void @foo2(i32 %x, void (i32)* %f) !dbg !4 { bb0: %cmp = icmp eq i32 %x, 0 br i1 %cmp, label %bb1, label %bb2 bb1: br label %bb3 bb2: br label %bb3 bb3: ret void } ```
The instrumented IR will look like below. Note that each llvm.pseudoprobe intrinsic call represents a pseudo probe at a block, of which the first parameter is the GUID of the probe’s owner function and the second parameter is the probe’s ID.
``` define internal void @foo2(i32 %x, void (i32)* %f) !dbg !4 { bb0: %cmp = icmp eq i32 %x, 0 call void @llvm.pseudoprobe(i64 837061429793323041, i64 1) br i1 %cmp, label %bb1, label %bb2 bb1: call void @llvm.pseudoprobe(i64 837061429793323041, i64 2) br label %bb3 bb2: call void @llvm.pseudoprobe(i64 837061429793323041, i64 3) br label %bb3 bb3: call void @llvm.pseudoprobe(i64 837061429793323041, i64 4) ret void } ```
Reviewed By: wmi
Differential Revision: https://reviews.llvm.org/D86499
|
 | llvm/test/Transforms/SampleProfile/pseudo-probe-emit.ll |
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/include/llvm/Transforms/IPO/SampleProfileProbe.h |
 | llvm/lib/Transforms/IPO/SampleProfileProbe.cpp |
 | llvm/lib/Transforms/IPO/CMakeLists.txt |
Commit
c083fededfa63df6e1a560334bdb78797da9ee57
by hoy[CSSPGO] A Clang switch -fpseudo-probe-for-profiling for pseudo-probe instrumentation.
This change introduces a new clang switch `-fpseudo-probe-for-profiling` to enable AutoFDO with pseudo instrumentation. Please refer to https://reviews.llvm.org/D86193 for the whole story.
One implication from pseudo-probe instrumentation is that the profile is now sensitive to CFG changes. We perform the pseudo instrumentation very early in the pre-LTO pipeline, before any CFG transformation. This ensures that the CFG instrumented and annotated is stable and optimization-resilient.
The early instrumentation also allows the inliner to duplicate probes for inlined instances. When a probe along with the other instructions of a callee function are inlined into its caller function, the GUID of the callee function goes with the probe. This allows samples collected on inlined probes to be reported for the original callee function.
Reviewed By: wmi
Differential Revision: https://reviews.llvm.org/D86502
|
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | clang/include/clang/Driver/Options.td |
 | clang/test/CodeGen/pseudo-probe-emit.c |
 | clang/lib/CodeGen/BackendUtil.cpp |
 | llvm/include/llvm/Passes/PassBuilder.h |
 | llvm/lib/Passes/PassBuilder.cpp |
 | clang/include/clang/Basic/CodeGenOptions.def |
 | clang/lib/Driver/ToolChains/Clang.cpp |
Commit
a4064cbf32eb3f9de5f1d8cc679712c2f81937e3
by llvmgnsyncbot[gn build] Port 64fa8cce225
|
 | llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn |
Commit
e425d0b92a1df69e5e41e6b23801fabeaaef7937
by llvm-dev[InstCombine][X86] Add basic addsub intrinsic SimplifyDemandedVectorElts support (PR46277)
Pass through the demanded elts mask to the source operands.
The next step will be to add support for folding to add/sub if we only demand odd/even elements.
|
 | llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp |
 | llvm/test/Transforms/InstCombine/X86/x86-addsub.ll |
Commit
61aec69a65dec949f3d2556c4d0efaa87869e1ee
by leonardchan[libcxxabi] Add macro for changing functions to support the relative vtables ABI
Under the relative vtables ABI, __dynamic_cast will not work since it assumes the vtable pointer is 2 ptrdiff_ts away from the start of the vtable (8-byte offset to top + 8-byte pointer to typeinfo) when it is actually 8 bytes away (4-byte offset to top + 4-byte offset to typeinfo). This adjusts the logic under __dynamic_cast and other areas vtable calculations are done to support this ABI when it's used.
Differential Revision: https://reviews.llvm.org/D77606
|
 | libcxxabi/src/private_typeinfo.cpp |
Commit
cdac34bd47a34337579e50dedc119548b379f20e
by harald[X86] Zero-extend pointers to i64 for x86_64
For LP64 mode, this has no effect as pointers are already 64 bits. For ILP32 mode (x32), this extension is specified by the ABI.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D91338
|
 | llvm/test/CodeGen/X86/sibcall.ll |
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/test/CodeGen/X86/x32-function_pointer-2.ll |
 | llvm/test/CodeGen/X86/pr38865-3.ll |
 | llvm/test/CodeGen/X86/pr38865.ll |
 | llvm/lib/Target/X86/X86CallingConv.td |
 | llvm/test/CodeGen/X86/x86-64-sret-return.ll |
 | llvm/test/CodeGen/X86/pr38865-2.ll |
 | llvm/test/CodeGen/X86/musttail-varargs.ll |
 | llvm/lib/Target/X86/X86CallingConv.cpp |
Commit
a474657e30edccd9e175d92bddeefcfa544751b2
by paul.robinson[FastISel] NFC: Remove obsolete -fast-isel-sink-local-values option
This option is not used for anything after #dc35368 (D91734).
|
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-gv.ll |
 | llvm/test/CodeGen/AArch64/swifterror.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll |
 | llvm/test/CodeGen/ARM/fast-isel-vararg.ll |
 | llvm/test/CodeGen/X86/inreg.ll |
 | llvm/test/CodeGen/X86/pr32340.ll |
 | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp |
 | llvm/test/CodeGen/X86/sse-intrinsics-fast-isel.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll |
 | llvm/test/CodeGen/ARM/fast-isel-call.ll |
 | llvm/test/CodeGen/X86/pr32484.ll |
 | llvm/test/CodeGen/X86/pr32284.ll |
 | llvm/test/CodeGen/ARM/fast-isel-intrinsic.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/simplestore.ll |
 | llvm/test/CodeGen/AArch64/arm64-fast-isel.ll |
 | llvm/test/CodeGen/X86/sink-local-value.ll |
 | llvm/test/CodeGen/X86/pr32345.ll |
 | llvm/test/DebugInfo/X86/prologue-stack.ll |
 | llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll |
 | llvm/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll |
 | llvm/test/CodeGen/ARM/swifterror.ll |
 | llvm/test/CodeGen/X86/avx512-mask-zext-bugfix.ll |
 | llvm/test/CodeGen/X86/fast-isel-call-cleanup.ll |
 | llvm/test/CodeGen/AArch64/arm64-abi_align.ll |
 | llvm/test/DebugInfo/Mips/delay-slot.ll |
 | llvm/test/CodeGen/ARM/fast-isel-select.ll |
 | llvm/test/CodeGen/X86/pr32241.ll |
 | llvm/test/CodeGen/Mips/Fast-ISel/simplestorei.ll |
Commit
750049d78b7421344882948cdf98fd233a557615
by hoy[CSSPGO] Disabling a pseudo probe test on non-x86 platforms.
Disabling a pseudo probe test on non-x86 platforms since it's not fully tested there.
|
 | llvm/test/Transforms/SampleProfile/pseudo-probe-emit.ll |
Commit
630d37dc1be1ff179a5c85f41070358d4706b907
by sjoerd.meijer[AArch64] Enable Cortex-A55 schedmodel
The model was committed in 4b8ade837e36b7f0181ce86fc23f33851d0fdd35 but not yet enabled to allow for a few fix ups. This adds a few of these fixes, and also a LLVM MCA test to check most instructions. While I do have plans to look into some more tuning, it's time to enable this as it better than using the A53 schedule.
Differential Revision: https://reviews.llvm.org/D88017
|
 | llvm/lib/Target/AArch64/AArch64SchedA55.td |
 | llvm/lib/Target/AArch64/AArch64.td |
 | llvm/test/tools/llvm-mca/AArch64/Cortex/A55-basic-instructions.s |
Commit
40dc535b5afffb1d309e44ca636219c1b8a6873b
by spatel[x86] add tests for maxnum/minnum with nnan; NFC
|
 | llvm/test/Analysis/CostModel/X86/fmaxnum.ll |
 | llvm/test/Analysis/CostModel/X86/fminnum.ll |
Commit
abef659a45fff4147f8f0ffd1d0f6600185e4a4e
by epastor[ms] [llvm-ml] Implement the statement expansion operator
If prefaced with a %, expand text macros and macro functions in any statement.
Also, prevent expanding text macros in the message of an ECHO directive unless expanded explicitly by the statement expansion operator.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D89740
|
 | llvm/include/llvm/MC/MCAsmMacro.h |
 | llvm/lib/MC/MCParser/MasmParser.cpp |
 | llvm/test/tools/llvm-ml/expansion.test |
Commit
fe431683484a3041e024ab2373bb707b1ca8d1cf
by nicholasCreating a named struct requires only a Context and a name, but looking up a struct by name requires a Module. The method on Module merely accesses the LLVMContextImpl and no data from the module itself, so this patch moves getTypeByName to a static method on StructType that takes a Context and a name.
There's a small number of users of this function, they are all updated.
This updates the C API adding a new method LLVMGetTypeByName2 that takes a context and a name.
Differential Revision: https://reviews.llvm.org/D78793
|
 | llvm/lib/Linker/IRMover.cpp |
 | polly/lib/CodeGen/LoopGeneratorsKMP.cpp |
 | llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp |
 | llvm/unittests/Analysis/TargetLibraryInfoTest.cpp |
 | llvm/lib/IR/Core.cpp |
 | llvm/include/llvm/IR/DerivedTypes.h |
 | llvm/include/llvm/IR/Module.h |
 | llvm/tools/llvm-c-test/echo.cpp |
 | llvm/lib/IR/Type.cpp |
 | llvm/include/llvm-c/Core.h |
Commit
b5f23189fb051e720d43f8a80c09038d4860b8a1
by nikita.ppv[DL] Inline getAlignmentInfo() implementation (NFC)
Apart from getting the entry in the table (which is already a separate function), the remaining logic is different for all alignment types and is better combined with getAlignment().
This is a minor efficiency improvement, and should make further improvements like using separate storage for different alignment types simpler.
|
 | llvm/include/llvm/IR/DataLayout.h |
 | llvm/lib/IR/DataLayout.cpp |
Commit
5fe10263ab39be96e316f37272b85a72596a7928
by mtrofin[llvm][inliner] Reuse the inliner pass to implement 'always inliner'
Enable performing mandatory inlinings upfront, by reusing the same logic as the full inliner, instead of the AlwaysInliner. This has the following benefits: - reduce code duplication - one inliner codebase - open the opportunity to help the full inliner by performing additional function passes after the mandatory inlinings, but before th full inliner. Performing the mandatory inlinings first simplifies the problem the full inliner needs to solve: less call sites, more contextualization, and, depending on the additional function optimization passes run between the 2 inliners, higher accuracy of cost models / decision policies.
Note that this patch does not yet enable much in terms of post-always inline function optimization.
Differential Revision: https://reviews.llvm.org/D91567
|
 | clang/test/Frontend/optimization-remark-line-directive.c |
 | llvm/test/Other/new-pm-lto-defaults.ll |
 | llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll |
 | llvm/test/Transforms/Inline/ML/bounds-checks.ll |
 | llvm/include/llvm/Passes/PassBuilder.h |
 | clang/test/Frontend/optimization-remark.c |
 | clang/test/Frontend/optimization-remark-new-pm.c |
 | llvm/lib/Analysis/MLInlineAdvisor.cpp |
 | llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll |
 | llvm/lib/Analysis/InlineAdvisor.cpp |
 | llvm/test/Other/new-pm-defaults.ll |
 | llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll |
 | llvm/test/Transforms/Inline/ML/bounds-checks-rewards.ll |
 | llvm/test/Transforms/Inline/pr46945.ll |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/test/Transforms/Inline/inline_stats.ll |
 | llvm/test/Other/new-pm-thinlto-defaults.ll |
 | llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll |
 | clang/test/CodeGen/thinlto-distributed-newpm.ll |
 | llvm/lib/Transforms/IPO/Inliner.cpp |
 | llvm/include/llvm/Analysis/InlineAdvisor.h |
 | llvm/test/Other/new-pm-module-inliner-wrapper.ll |
 | clang/test/Frontend/optimization-remark-with-hotness-new-pm.c |
 | llvm/lib/Passes/PassRegistry.def |
Commit
29bd6519d2e220f6a0ab27efd0adbe16ac01a7ef
by Matthew.ArsenaultSplitKit: Use Register
|
 | llvm/lib/CodeGen/SplitKit.h |
 | llvm/lib/CodeGen/SplitKit.cpp |
Commit
e5c17b2deea5620dcc736a9dad5def219f86e4da
by epastor[ms] [llvm-ml] Test macro function invocations in arbitrary positions
Differential Revision: https://reviews.llvm.org/D89741
|
 | llvm/test/tools/llvm-ml/macro_function.test |
Commit
fdff677a955730b3e85b870ff1b30d7f8ea5719c
by yitzhakm[libTooling] Remove deprecated Clang Transformer declarations
A number of declarations were leftover after the move from `clang::tooling` to `clang::transformer`. This patch removes those declarations and upgrades the handful of references to the deprecated declarations.
Differential Revision: https://reviews.llvm.org/D92340
|
 | clang/include/clang/Tooling/Transformer/RangeSelector.h |
 | clang-tools-extra/unittests/clang-tidy/TransformerClangTidyCheckTest.cpp |
 | clang/include/clang/Tooling/Transformer/RewriteRule.h |
 | clang/unittests/Tooling/TransformerTest.cpp |
 | clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp |
 | clang/lib/Tooling/Transformer/RewriteRule.cpp |
Commit
4e85e0ca904d154b1ee30b213e8d7bfb8afaa25d
by githubgithub actions: Use correct credentials for pushing
|
 | .github/workflows/main-branch-sync.yml |
Commit
3fd39d3694d32efa44242c099e923a7f4d982095
by paul.robinson[FastISel] NFC: Clean up unnecessary bookkeeping
Now that we flush the local value map for every instruction, we don't need any extra flushes for specific cases. Also, LastFlushPoint is not used for anything. Follow-ups to #dc35368 (D91734).
Differential Revision: https://reviews.llvm.org/D92338
|
 | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp |
 | llvm/include/llvm/CodeGen/FastISel.h |
Commit
66124098a88a564143a36869f495708502a35c50
by flo[ConstraintElimination] Expand GEP decomposition tests.
This adjusts the tests to cover more scenarios.
|
 | llvm/test/Transforms/ConstraintElimination/geps.ll |
Commit
164410324d8bf3b5a99e39f7dfe3c6d6972dab30
by i[CodeGen] -fno-delete-null-pointer-checks: change dereferenceable to dereferenceable_or_null
After D17993, with -fno-delete-null-pointer-checks we add the dereferenceable attribute to the `this` pointer.
We have observed that one internal target which worked before fails even with -fno-delete-null-pointer-checks. Switching to dereferenceable_or_null fixes the problem.
dereferenceable currently does not always respect NullPointerIsValid and may imply nonnull and lead to aggressive optimization. The optimization may be related to `CallBase::isReturnNonNull`, `Argument::hasNonNullAttr`, or `Value::getPointerDereferenceableBytes`. See D66664 and D66618 for some discussions.
Reviewed By: bkramer, rsmith
Differential Revision: https://reviews.llvm.org/D92297
|
 | clang/lib/CodeGen/CGCall.cpp |
 | clang/test/CodeGenCXX/this-nonnull.cpp |
Commit
f89e9c8201ea5a5b63af854c92ed26bc7ab4b8db
by enye.shi[HIP] Fix HIP test on windows due to lld suffix
On Windows, lld is instead named lld.exe, therefore a few HIP tests are failing. Instead the wildcard should be modified to .*lld.* to handle .exe. This fixes the bug: https://bugs.llvm.org/show_bug.cgi?id=48289.
Differential Revision: https://reviews.llvm.org/D92342
|
 | clang/test/Driver/hip-toolchain-rdc-static-lib.hip |
 | clang/test/Driver/hip-toolchain-rdc.hip |
Commit
ebac7100090a914e6a4dd0fdf2a5a196423cbaec
by thakis[lld-macho] Don't warn on non-existent system libraries
Now, new mach-o lld no longer warns if the isysroot has just usr/lib and System/Library/Frameworks but is missing usr/local/lib and System/Frameworks.
This matches ld64 and old mach-o lld and fixes a regression from D85992.
It also fixes the only test failure in `check-lld` when running it on an M1 Mac.
Differential Revision: https://reviews.llvm.org/D91891
|
 | lld/test/MachO/syslibroot.test |
 | lld/MachO/Driver.cpp |
Commit
78c04fe99ec0013c53cd5d165543200009116c85
by thakis[lld/mac] Don't warn on -bundle and -execute flags
They've been implemented since D87856 but since they still were HelpHidden, the driver still warned claiming they were implemented. Remove HelpHidden.
Use -fatal_warnings to test that the flags now don't warn. The test depends on D91894 and D91891 to pass.
Differential Revision: https://reviews.llvm.org/D91971
|
 | lld/MachO/Options.td |
 | lld/test/MachO/load-commands.s |
Commit
f6f28b44ad48e35d1300693d9c34f47782b519a4
by Andrey.Churbanov[OpenMP] libomp: fix mutexinoutset dependence for proxy tasks
Once __kmp_task_finish is not executed for proxy tasks, move mutexinoutset dependency code to __kmp_release_deps which is executed for all task kinds.
Differential Revision: https://reviews.llvm.org/D92326
|
 | openmp/runtime/src/kmp_taskdeps.h |
 | openmp/runtime/src/kmp_tasking.cpp |
Commit
9615890db576721fbd73ae77d81d39435e83b4b4
by Andrey.Churbanov[OpenMP] libomp: change shm name to include UID, call unregister_lib on SIGTERM
With the change to using shared memory, there were a few problems that need to be fixed. - The previous filename that was used for SHM only used process id. Given that process is usually based on 16bit number, this was causing some conflicts on machines. Thus we add UID to the name to prevent this. - It appears under some conditions (SIGTERM, etc) the shared memory files were not getting cleaned up. Added a call to clean up the shm files under those conditions. For this user needs to set envirable KMP_HANDLE_SIGNALS to true.
Patch by Erdner, Todd <todd.erdner@intel.com>
Differential Revision: https://reviews.llvm.org/D91869
|
 | openmp/runtime/src/kmp_runtime.cpp |
 | openmp/runtime/src/z_Linux_util.cpp |
 | openmp/runtime/src/kmp.h |
Commit
ac40a2d8f16b8a8c68fc811d67f647740e965cb8
by Duncan P. N. Exon SmithSerialization: Change InputFile to use FileEntryRef and add getVirtualFileRef, NFC
Change the `InputFile` class to store `Optional<FileEntryRef>` instead of `FileEntry*`. This paged in a few API changes:
- Added `FileManager::getVirtualFileRef`, and converted `getVirtualFile` to a wrapper of it. - Updated `SourceManager::bypassFileContentsOverride` to take `FileEntryRef` and return `Optional<FileEntryRef>` (`ASTReader::getInputFile` is the only caller).
Differential Revision: https://reviews.llvm.org/D90053
|
 | clang/lib/Serialization/ASTReader.cpp |
 | clang/include/clang/Serialization/ModuleFile.h |
 | clang/lib/Basic/SourceManager.cpp |
 | clang/include/clang/Basic/SourceManager.h |
 | clang/lib/Basic/FileManager.cpp |
 | clang/include/clang/Basic/FileManager.h |
Commit
fd3d1b09c12f1419292172627dbca9929f0daf39
by protze[OpenMP][Tests][NFC] Use FileCheck from cmake config
|
 | openmp/runtime/test/lit.cfg |
Commit
00bbef2bb20cf212722de282e4eb9afd09ab50db
by akhuang[llvm-symbolizer] Fix native symbolization on windows for inline sites.
The existing code handles this correctly and I checked that the code in NativeInlineSiteSymbol also handles this correctly, but it was wrong in the NativeFunctionSymbol code.
Differential Revision: https://reviews.llvm.org/D92134
|
 | lld/test/COFF/symbolizer-inline.s |
 | llvm/lib/DebugInfo/PDB/Native/NativeFunctionSymbol.cpp |