|
 | llvm/lib/Target/RISCV/RISCVInstrInfo.td (diff) |
Commit
993f3c61b31d3917e0809bf1925c97fc0a61ce90
by llvm-dev[TTI] getUserCost - Ensure a vector insert/extract index is in unsigned 32-bit range
Otherwise fallback to the generic 'unknown index' path
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29050
|
 | llvm/test/Transforms/LICM/crash.ll (diff) |
 | llvm/include/llvm/Analysis/TargetTransformInfoImpl.h (diff) |
Commit
b02938439dab1f282d28a4a94419de505f0f9c6e
by dvyukovtsan: uninline RacyStacks::operator==
It's only used during race reporting. There is no point in polluting the main header file with it.
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D110470
|
 | compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp (diff) |
 | compiler-rt/lib/tsan/rtl/tsan_rtl.h (diff) |
Commit
883758ed480012a875146bc206cb8bcdd384405b
by david.green[ARM] Fix Arm block placement creating branches after jump tables.
Given: - A jump table - Which jumps to the next block - The next block ends in a WLS - Where the WLS conditionally jumps to block earlier in the program.
The Arm block placement pass would attempt to move the block containing the WLS earlier, as the WLS instruction can only branch forward. In doing so it would add a branch from the jumptable block to the WLS block, thinking it previously fell-through.
This in itself would be fine, if a little inefficient, but the constant island pass expects all instructions after a jump-table branch to have been removed by analyzeBranch. So it gets confused and can assign the same labels to multiple jump table blocks.
I've changed the condition to the same as used in analyzeBranch.
|
 | llvm/lib/Target/ARM/ARMBlockPlacement.cpp (diff) |
 | llvm/test/CodeGen/Thumb2/mve-wls-block-placement.mir (diff) |
Commit
0f78ece1690255e52d87bd367c63c2a1ccf17430
by arjunpitchanathan[MLIR] Add functionality to remove redundant local variables
This patch adds functionality to FlatAffineConstraints to remove local variables using equalities. This helps in keeping output representation of FlatAffineConstraints smaller.
This patch is part of a series of patches aimed at generalizing affine dependence analysis.
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D110056
|
 | mlir/unittests/Analysis/AffineStructuresTest.cpp (diff) |
 | mlir/include/mlir/Analysis/AffineStructures.h (diff) |
 | mlir/lib/Analysis/AffineStructures.cpp (diff) |
|
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff) |
|
 | llvm/include/llvm/IR/DIBuilder.h (diff) |
 | llvm/lib/IR/DIBuilder.cpp (diff) |
Commit
0b61f43b6096a9e98652991cba34e8ad44d35101
by markus.boeck02[CMake] Consistently use the LibXml2::LibXml2 target instead of LIBXML2_LIBRARIES
Linking against the LibXml2::LibXml2 target has the advantage of not only importing the library, but also adding the include path as well as any definitions the library requires. In case of a static build of libxml2, eg. a define is set on Windows to remove any DLL imports and export.
LLVM already makes use of the target, but c-index-test and lldb were still linking against the library only.
The workaround for Mac OS-X that I removed seems to have also been made redundant since https://reviews.llvm.org/D84563 I believe
Differential Revision: https://reviews.llvm.org/D109975
|
 | lldb/source/Host/CMakeLists.txt (diff) |
 | clang/tools/c-index-test/CMakeLists.txt (diff) |
Commit
5a14edd8edb4d560e8a6420fffb490498baee0cf
by llvm-dev[InstCombine] Ensure shifts are in range for (X << C1) / C2 -> X fold.
We can get here before out of range shift amounts have been handled - limit to BW-2 for sdiv and BW-1 for udiv
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38078
|
 | llvm/test/Transforms/InstCombine/shift.ll (diff) |
 | llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp (diff) |
Commit
2c28e3f008b6b93a58635999ff20572de01e8392
by clementval[fir] Add desc to fir.array_load op and update operand name
This patch is part of the upstreaming effort from fir-dev branch.
Add a description for the fir.array_load opeartion and rename lenParams to typeparams.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D110393
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
|
 | flang/include/flang/Optimizer/Dialect/FIROps.td (diff) |
Commit
3a6ba3675177cb5e47dee325f300aced4cd864ed
by mgorny[lldb] Convert misc. StringConvert uses
Replace misc. StringConvert uses with llvm::to_integer() and llvm::to_float(), except for cases where further refactoring is planned. The purpose of this change is to eliminate the StringConvert API that is duplicate to LLVM, and less correct in behavior at the same time.
Differential Revision: https://reviews.llvm.org/D110447
|
 | lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp (diff) |
 | lldb/source/Plugins/Platform/Android/PlatformAndroid.cpp (diff) |
 | lldb/unittests/debugserver/RNBSocketTest.cpp (diff) |
 | lldb/source/Interpreter/OptionValueFileSpecList.cpp (diff) |
 | lldb/source/Interpreter/OptionValueSInt64.cpp (diff) |
 | lldb/source/Interpreter/OptionValueArray.cpp (diff) |
 | lldb/source/Target/UnixSignals.cpp (diff) |
 | lldb/source/Interpreter/OptionValuePathMappings.cpp (diff) |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (diff) |
 | lldb/tools/lldb-server/lldb-gdbserver.cpp (diff) |
 | lldb/source/Interpreter/OptionValueUInt64.cpp (diff) |
 | lldb/source/Interpreter/Property.cpp (diff) |
 | lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp (diff) |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (diff) |
 | lldb/source/Symbol/SymbolContext.cpp (diff) |
 | lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp (diff) |
Commit
a25f25c3b7ebce869c33cb7ae48ebf9681b99210
by llvm-dev[X86] combineShiftToPMULH - relax from ISA from SSE41 to SSE2
With improved shuffle combines (in particular canonicalizeShuffleWithBinOps), we can now usefully perform this on any SSE2+ target.
We should be able to remove this entirely and just use DAGCombiner's combineShiftToMULH if we can someday get it to support illegal (pre-widened) types.
|
 | llvm/test/CodeGen/X86/pmulh.ll (diff) |
 | llvm/lib/Target/X86/X86ISelLowering.cpp (diff) |
|
 | llvm/lib/Target/X86/X86FastISel.cpp (diff) |
Commit
f5a26ccae24caa21f7adafe0aab704fd0bc5a618
by llvm-dev[X86][SSE] combineMulToPMADDWD - enable sext(v8i16) -> zext(v8i16) fold on pre-SSE41 targets
We already do this on SSE41 targets where we have sext/zext instructions, now that combineShiftToPMULH handles SSE2 targets, we can enable this here as well.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp (diff) |
 | llvm/test/CodeGen/X86/madd.ll (diff) |
Commit
44c401bdc355baf0fc1264f13d9c31d0c72b7e8e
by kazu[Mips] Remove redundant declarations (NFC)
Note that identical declarations immediately precede what's being removed in this patch.
Identified with readability-redundant-declaration.
|
 | llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp (diff) |
|
 | llvm/test/CodeGen/X86/shrink_vmul.ll (diff) |
 | llvm/lib/Target/X86/X86ISelLowering.cpp (diff) |
Commit
eb7c78c2c5223b60e1f4f03876beceb46c26dd48
by llvm-dev[X86][SSE] combineMulToPMADDWD - mask off upper bits of sign-extended vXi32 constants
If we are multiplying by a sign-extended vXi32 constant, then we can mask off the upper 16 bits to allow folding to PMADDWD and make use of its implicit sign-extension from i16
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp (diff) |
 | llvm/test/CodeGen/X86/shrink_vmul.ll (diff) |
Commit
8c83bd3bd4c482b22abf7468687269ba010d36e4
by llvm-dev[CostModel][X86] Adjust vXi32 multiply costs if it can be performed using PMADDWD
Update the costs to match the codegen from combineMulToPMADDWD - not only can we use PMADDWD is its zero-extended, but also if its a constant or sign-extended from a vXi16 (which can be replaced with a zero-extension).
|
 | llvm/test/Analysis/CostModel/X86/slm-arith-costs.ll (diff) |
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp (diff) |
 | llvm/test/Analysis/CostModel/X86/mul32.ll (diff) |
 | llvm/test/Transforms/LoopVectorize/X86/mul_slm_16bit.ll (diff) |
Commit
c2ec5dd209532b1d618958ade6a7d550a0c31ea5
by mydeveloperday[clang-format] Left/Right alignment fixer can cause false positive replacements when they don't actually change anything
Earlier during the development of {D69764} I felt it was no longer necessary to ensure we were not trying to change code which didn't need to change and we felt this could be removed, however I'd like to bring this back for now as I am seeing some false positives in terms of the "replacements"
What I see is the generation of a replacement which is a "No Op" on the original code, I think this comes about because of the merging of replacements:
``` static const a; -> const static a; -> static const a; ```
The replacements don't really merge, in such a way as to identify when we have gone back to the original
Also remove the Penalty as I'm not using it (and it became marked as set and no used, I'd rather get rid of it if it means nothing)
I think we need to do this step for now, as many people use the --output-replacements-xml to identify that the file "needs a clang-format"
The same can be seen with the -n or --dry-run option as this uses the replacements to drive the error/warning output.
Reviewed By: HazardyKnusperkeks
Differential Revision: https://reviews.llvm.org/D110392
|
 | clang/lib/Format/QualifierAlignmentFixer.cpp (diff) |
 | clang/unittests/Format/QualifierFixerTest.cpp (diff) |
Commit
18c8ed54160bec12344288c6993b0f548fbe809e
by llvm-dev[DAG] ReduceLoadOpStoreWidth - replace getABITypeAlign with allowsMemoryAccess (PR45116)
One of the cases identified in PR45116 - we don't need to limit store narrowing to ABI alignment, we can use allowsMemoryAccess - which tests using getABITypeAlign, but also checks if a target permits (fast) misaligned memory access by checking allowsMisalignedMemoryAccesses as a fallback.
|
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff) |
 | llvm/test/CodeGen/X86/narrow_op-1.ll (diff) |
 | llvm/test/CodeGen/X86/i1narrowfail.ll (diff) |
Commit
bef55a2b47a938ef35cbd7b61a1e5fa74e68c9ed
by Lang Hames[ORC] Introduce EPCGenericRTDyldMemoryManager.
EPCGenericRTDyldMemoryMnaager is an EPC-based implementation of the RuntimeDyld::MemoryManager interface. It enables remote-JITing via EPC (backed by a SimpleExecutorMemoryManager instance on the executor side) for RuntimeDyld clients.
The lli and lli-child-target tools are updated to use SimpleRemoteEPC and SimpleRemoteEPCServer (rather than OrcRemoteTargetClient/Server), and EPCGenericRTDyldMemoryManager for MCJIT tests.
By enabling remote-JITing for MCJIT and RuntimeDyld-based ORC clients, EPCGenericRTDyldMemoryManager allows us to deprecate older remote-JITing support, including OrcTargetClient/Server, OrcRPCExecutorProcessControl, and the Orc RPC system itself. These will be removed in future patches.
|
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorMemoryManager.cpp (diff) |
 | llvm/tools/lli/RemoteJITUtils.h |
 | llvm/lib/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.cpp |
 | llvm/tools/lli/ChildTarget/ChildTarget.cpp (diff) |
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp (diff) |
 | llvm/include/llvm/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.h |
 | llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h (diff) |
 | llvm/lib/ExecutionEngine/Orc/CMakeLists.txt (diff) |
 | llvm/tools/lli/lli.cpp (diff) |
 | llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.h (diff) |
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp (diff) |
 | llvm/tools/lli/ForwardingMemoryManager.h |
 | llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp (diff) |
|
 | llvm/tools/lli/ChildTarget/CMakeLists.txt (diff) |
Commit
99951a56842d8e4cd0706cd17a04f77b5d0f6dd0
by Lang HamesRevert "[ORC] Introduce EPCGenericRTDyldMemoryManager."
This reverts commit bef55a2b47a938ef35cbd7b61a1e5fa74e68c9ed while I investigate failures on some bots. Also reverts "[lli] Add ChildTarget dependence on OrcTargetProcess library." (7a219d801bf2c3006482cf3cbd3170b3b4ea2e1b) which was a fallow-up to bef55a2b47a.
|
 | llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.h (diff) |
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorMemoryManager.cpp (diff) |
 | llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h (diff) |
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp (diff) |
 | llvm/tools/lli/lli.cpp (diff) |
 | llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp (diff) |
 | llvm/tools/lli/ChildTarget/ChildTarget.cpp (diff) |
 | llvm/lib/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.cpp |
 | llvm/lib/ExecutionEngine/Orc/CMakeLists.txt (diff) |
 | llvm/tools/lli/ChildTarget/CMakeLists.txt (diff) |
 | llvm/tools/lli/ForwardingMemoryManager.h |
 | llvm/include/llvm/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.h |
 | llvm/tools/lli/RemoteJITUtils.h |
 | llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp (diff) |
|
 | lld/test/ELF/linkerscript/memory-err.s (diff) |
 | lld/test/ELF/warn-backrefs.s (diff) |
 | lld/test/ELF/start-group.s |
 | lld/test/ELF/common-page.s (diff) |
Commit
897eb579c615260d68fee7ecc11a5d1773fa3781
by Lang Hames[ORC-RT] ExecutorAddrDiff ergonomic improvements; contains and overlaps methods
Renames StartAddress and EndAddress members to Start and End.
Adds contains and overlap methods.
Adds a constructor from an address and size.
These changes are counterparts to LLVM commits ef391df2b6332, c0d889995e708, and 37f1b7a3f35fd.
|
 | compiler-rt/lib/orc/macho_platform.cpp (diff) |
 | compiler-rt/lib/orc/elfnix_platform.cpp (diff) |
 | compiler-rt/lib/orc/unittests/executor_address_test.cpp |
 | compiler-rt/lib/orc/unittests/CMakeLists.txt (diff) |
 | compiler-rt/lib/orc/executor_address.h (diff) |
Commit
1c3859f31d0ef8e99c4aabbcfd11e5eea03e3c15
by nikita.ppv[BasicAA] Don't consider Argument as escape source (NFCI)
The case of an Argument and an identified function local is already handled earlier, because we don't care about captures in that case. As such, we don't need to additionally consider the combination of an Argument with a non-escaping identified function local.
This ensures that isEscapeSource() only returns true for instructions, which is necessary for D110368.
|
 | llvm/lib/Analysis/BasicAliasAnalysis.cpp (diff) |
Commit
327bbbb10bfd95db38ae3406c87d481a07f67633
by nikita.ppv[DSE] Make capture check more precise
It is sufficient that the object has not been captured before the load that produces the pointer we're loading. A capture after that can not affect the already loaded pointer.
This is small part of D110368 applied separately.
|
 | llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll (diff) |
 | llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp (diff) |
Commit
ba664d906644e62ac30e9a92edf48391c923992c
by nikita.ppv[AA] Move earliest escape tracking from DSE to AA
This is a followup to D109844 (and alternative to D109907), which integrates the new "earliest escape" tracking into AliasAnalysis. This is done by replacing the pre-existing context-free capture cache in AAQueryInfo with a replaceable (virtual) object with two implementations: The SimpleCaptureInfo implements the previous behavior (check whether object is captured at all), while EarliestEscapeInfo implements the new behavior from DSE.
This combines the "earliest escape" analysis with the full power of BasicAA: It subsumes the call handling from D109907, considers a wider range of escape sources, and works with AA recursion. The compile-time cost is slightly higher than with D109907.
Differential Revision: https://reviews.llvm.org/D110368
|
 | llvm/test/Transforms/DeadStoreElimination/captures-before-call.ll (diff) |
 | llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp (diff) |
 | llvm/unittests/Analysis/BasicAliasAnalysisTest.cpp (diff) |
 | llvm/include/llvm/Analysis/AliasAnalysis.h (diff) |
 | llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll (diff) |
 | llvm/lib/Analysis/AliasAnalysis.cpp (diff) |
 | llvm/lib/Analysis/BasicAliasAnalysis.cpp (diff) |
Commit
40cd4db442994e2bac6704e34580246c1d0bd91d
by i[ELF] Default gotBaseSymInGotPlt to false (NFC for most architectures)
Most architectures use .got instead of .got.plt, so switching the default can minimize customization.
This fixes an issue for SPARC V9 which uses .got . AVR, AMDGPU, and MSP430 don't seem to use _GLOBAL_OFFSET_TABLE_.
|
 | lld/ELF/Arch/ARM.cpp (diff) |
 | lld/ELF/Arch/AArch64.cpp (diff) |
 | lld/ELF/Arch/PPC.cpp (diff) |
 | lld/ELF/Arch/X86.cpp (diff) |
 | lld/ELF/Target.h (diff) |
 | lld/ELF/Arch/RISCV.cpp (diff) |
 | lld/ELF/Arch/Hexagon.cpp (diff) |
 | lld/ELF/Arch/Mips.cpp (diff) |
 | lld/ELF/Arch/PPC64.cpp (diff) |
 | lld/ELF/Arch/X86_64.cpp (diff) |