Commit
4208ea3e19f8e3e8cd35e6f5a6c43f4aa066c6ec
by craig.topper[FastISel] Bail out of selectGetElementPtr for vector GEPs.
The code that decomposes the GEP into ADD/MUL doesn't work properly for vector GEPs. It can create bad COPY instructions or possibly assert.
For now just bail out to SelectionDAG.
Fixes PR45906
|
 | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp |
 | llvm/test/CodeGen/X86/masked_gather_scatter.ll |
Commit
becf15527583380b510ce269ee51abd364551f13
by Louis Dionne[libc++] Add comment in atomic test to explain why part of it is disabled on Apple
|
 | libcxx/test/std/atomics/types.pass.cpp |
Commit
226d80ebe20e2d796af6c1bc43d9fbdfbb9d4a07
by tejohnson[MemProf] Rename HeapProfiler to MemProfiler for consistency
This is consistent with the clang option added in 7ed8124d46f94601d5f1364becee9cee8538265e, and the comments on the runtime patch in D87120.
Differential Revision: https://reviews.llvm.org/D87622
|
 | clang/lib/CodeGen/BackendUtil.cpp |
 | clang/include/clang/Driver/SanitizerArgs.h |
 | clang/lib/Driver/ToolChains/CommonArgs.cpp |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | llvm/lib/Transforms/Instrumentation/Instrumentation.cpp |
 | llvm/test/Instrumentation/HeapProfiler/instrumentation-use-callbacks.ll |
 | llvm/test/Instrumentation/HeapProfiler/basic.ll |
 | clang/include/clang/Basic/CodeGenOptions.def |
 | llvm/include/llvm/Transforms/Instrumentation/MemProfiler.h |
 | llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h |
 | llvm/lib/Transforms/Instrumentation/CMakeLists.txt |
 | llvm/lib/Transforms/Instrumentation/MemProfiler.cpp |
 | llvm/test/Instrumentation/HeapProfiler/version-mismatch-check.ll |
 | clang/lib/Driver/SanitizerArgs.cpp |
 | llvm/test/Instrumentation/HeapProfiler/scale-granularity.ll |
 | clang/test/Driver/fmemprof.cpp |
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp |
 | llvm/include/llvm/InitializePasses.h |
 | llvm/test/Instrumentation/HeapProfiler/masked-load-store.ll |
 | llvm/lib/Passes/PassBuilder.cpp |
Commit
2ad38f7a46b59a5b6653239245d29590d7977b29
by llvmgnsyncbot[gn build] Port 226d80ebe20
|
 | llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn |
Commit
c2590de30df23ef0db39b496cdec62a83a61fbfa
by aeubanks[docs][NewPM] Add docs for writing NPM passes
As to not conflict with the legacy PM example passes under llvm/lib/Transforms/Hello, this is under HelloNew. This makes the CMakeLists.txt and general directory structure less confusing for people following the example.
Much of the doc structure was taken from WritinAnLLVMPass.rst.
This adds a HelloWorld pass which simply prints out each function name.
More will follow after this, e.g. passes over different units of IR, analyses. https://llvm.org/docs/WritingAnLLVMPass.html contains a lot more.
Reviewed By: ychen, asbirlea
Differential Revision: https://reviews.llvm.org/D86979
|
 | llvm/docs/UserGuides.rst |
 | llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn |
 | llvm/lib/Passes/LLVMBuild.txt |
 | llvm/lib/Transforms/HelloNew/LLVMBuild.txt |
 | llvm/docs/WritingAnLLVMNewPMPass.rst |
 | llvm/test/Transforms/HelloNew/helloworld.ll |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/include/llvm/Transforms/HelloNew/HelloWorld.h |
 | llvm/lib/Transforms/LLVMBuild.txt |
 | llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn |
 | llvm/lib/Transforms/CMakeLists.txt |
 | llvm/docs/WritingAnLLVMPass.rst |
 | llvm/lib/Transforms/HelloNew/CMakeLists.txt |
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/lib/Transforms/HelloNew/HelloWorld.cpp |
Commit
9d01612db48fa27d18c6320974b8d711572e5c67
by Vitaly Buka[Asan] Fix false leak report
If user thread is in the allocator, the allocator may have no pointer into future user's part of the allocated block. AddrIsInside ignores such pointers and lsan reports a false memory leak.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87552
|
 | compiler-rt/lib/asan/asan_allocator.cpp |
 | compiler-rt/test/asan/TestCases/redzone_noleak.cpp |
Commit
7d1ed69c8aad00f3ba1e917da54508489de6d610
by joker.ephMake namespace handling uniform across dialect backends.
Now backends spell out which namespace they want to be in, instead of relying on clients #including them inside already-opened namespaces. This also means that cppNamespaces should be fully qualified, and there's no implicit "::mlir::" prepended to them anymore.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D86811
|
 | mlir/lib/Dialect/AVX512/IR/AVX512Dialect.cpp |
 | mlir/lib/TableGen/Operator.cpp |
 | mlir/include/mlir/TableGen/Operator.h |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMAVX512.td |
 | mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp |
 | mlir/lib/Dialect/Shape/IR/Shape.cpp |
 | mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td |
 | mlir/include/mlir/Dialect/SPIRV/SPIRVDialect.h |
 | flang/lib/Optimizer/Dialect/FIROps.cpp |
 | mlir/include/mlir/Dialect/Quant/QuantOpsBase.td |
 | mlir/examples/toy/Ch4/include/toy/Ops.td |
 | mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h |
 | mlir/include/mlir/Dialect/SCF/SCF.h |
 | mlir/lib/Dialect/SPIRV/SPIRVAttributes.cpp |
 | mlir/include/mlir/Dialect/GPU/ParallelLoopMapper.h |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td |
 | mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td |
 | mlir/include/mlir/Dialect/PDL/IR/PDLBase.td |
 | mlir/lib/Dialect/GPU/IR/GPUDialect.cpp |
 | mlir/include/mlir/Dialect/Shape/IR/Shape.h |
 | mlir/lib/Dialect/SPIRV/SPIRVOps.cpp |
 | mlir/tools/mlir-tblgen/RewriterGen.cpp |
 | mlir/examples/toy/Ch4/include/toy/Dialect.h |
 | mlir/tools/mlir-tblgen/OpFormatGen.cpp |
 | mlir/include/mlir/Dialect/Vector/VectorOps.td |
 | mlir/lib/Dialect/PDL/IR/PDL.cpp |
 | mlir/include/mlir/Dialect/PDL/IR/PDL.h |
 | mlir/test/mlir-tblgen/op-attribute.td |
 | mlir/include/mlir/Dialect/AVX512/AVX512Dialect.h |
 | mlir/include/mlir/Dialect/SPIRV/SPIRVOps.h |
 | mlir/include/mlir/Dialect/GPU/GPUDialect.h |
 | mlir/test/lib/Dialect/Test/TestDialect.h |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.h |
 | mlir/include/mlir/Dialect/Vector/VectorOps.h |
 | mlir/examples/toy/Ch2/include/toy/Ops.td |
 | mlir/examples/toy/Ch2/include/toy/Dialect.h |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMAVX512Dialect.h |
 | mlir/include/mlir/Dialect/OpenACC/OpenACC.h |
 | mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterp.h |
 | mlir/examples/toy/Ch7/include/toy/Ops.td |
 | mlir/include/mlir/IR/OpBase.td |
 | mlir/test/mlir-tblgen/op-decl.td |
 | mlir/lib/Dialect/LLVMIR/IR/ROCDLDialect.cpp |
 | mlir/test/lib/Dialect/Test/TestOps.td |
 | mlir/include/mlir/Dialect/Quant/QuantOps.h |
 | mlir/examples/toy/Ch3/include/toy/Ops.td |
 | mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td |
 | mlir/lib/Dialect/Vector/VectorOps.cpp |
 | mlir/include/mlir/Dialect/SPIRV/SPIRVTypes.h |
 | mlir/examples/toy/Ch5/include/toy/Dialect.h |
 | mlir/examples/toy/Ch5/include/toy/Ops.td |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td |
 | mlir/include/mlir/Dialect/SPIRV/SPIRVAttributes.h |
 | mlir/include/mlir/Dialect/GPU/GPUBase.td |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
 | mlir/include/mlir/Dialect/LLVMIR/NVVMOps.td |
 | mlir/include/mlir/Dialect/Shape/IR/ShapeBase.td |
 | mlir/examples/toy/Ch3/include/toy/Dialect.h |
 | mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.h |
 | mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.h |
 | flang/include/flang/Optimizer/Dialect/FIROps.h |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgTypes.h |
 | mlir/include/mlir/Dialect/SCF/SCFOps.td |
 | mlir/examples/toy/Ch6/include/toy/Dialect.h |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOpsInterface.td |
 | mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td |
 | mlir/tools/mlir-tblgen/DialectGen.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/LLVMAVX512Dialect.cpp |
 | mlir/include/mlir/Dialect/AVX512/AVX512.td |
 | mlir/lib/Dialect/SCF/SCF.cpp |
 | mlir/examples/toy/Ch7/include/toy/Dialect.h |
 | mlir/examples/toy/Ch6/include/toy/Ops.td |
 | mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp |
 | flang/include/flang/Optimizer/Dialect/FIROps.td |
 | mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.h |
 | mlir/include/mlir/Dialect/SPIRV/SPIRVBase.td |
 | mlir/lib/Dialect/GPU/Transforms/ParallelLoopMapper.cpp |
Commit
db94df04fbfaa26cc3fda1ef77af32776bd10f21
by nemanja.i.ibmUpdate PowerPC backend ownership in CODE_OWNERS.TXT
|
 | llvm/CODE_OWNERS.TXT |
Commit
f859c30ecbbbeb33a90b00b76044a688b2e71879
by Austin.Kerbow[AMDGPU] Add XDL resource to scheduling model
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D87621
|
 | llvm/lib/Target/AMDGPU/SISchedule.td |
 | llvm/test/CodeGen/AMDGPU/schedule-xdl-resource.ll |
Commit
c193a689b475f91e63adb25dc5855f7a7f068c9a
by craig.topper[SelectionDAG] Use Align/MaybeAlign in calls to getLoad/getStore/getExtLoad/getTruncStore.
The versions that take 'unsigned' will be removed in the future.
I tried to use getOriginalAlign instead of getAlign in some places. getAlign factors in the minimum alignment implied by the offset in the pointer info. Since we're also passing the pointer info we can use the original alignment.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D87592
|
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp |
 | llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp |
 | llvm/test/CodeGen/AArch64/usub_sat_vec.ll |
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/lib/Target/ARM/ARMISelLowering.cpp |
 | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp |
 | llvm/test/CodeGen/PowerPC/aix-cc-abi.ll |
 | llvm/lib/Target/AMDGPU/SIISelLowering.cpp |
 | llvm/lib/Target/AVR/AVRISelLowering.cpp |
 | llvm/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp |
 | llvm/lib/Target/XCore/XCoreISelLowering.cpp |
 | llvm/lib/Target/Mips/MipsSEISelLowering.cpp |
 | llvm/lib/Target/Sparc/SparcISelLowering.cpp |
 | llvm/test/CodeGen/AArch64/uadd_sat_vec.ll |
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
 | llvm/lib/Target/Mips/MipsISelLowering.cpp |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp |
 | llvm/test/CodeGen/AArch64/sadd_sat_vec.ll |
 | llvm/test/CodeGen/AArch64/ssub_sat_vec.ll |
 | llvm/test/CodeGen/AMDGPU/private-element-size.ll |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp |
Commit
1ec02efee9b1d01cde89f31ca9ba6a46b7662ac5
by zoecarver[libc++] Make rotate a constexpr.
This patch makes `std::rotate` a constexpr. In doing so, this patch also updates the internal `__move` and `__move_backward` funtions to be constexpr.
Reviewed By: ldionne
Differential Revision: https://reviews.llvm.org/D65721
|
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp |
 | libcxx/include/algorithm |
 | libcxx/www/cxx2a_status.html |
 | libcxx/include/iterator |
Commit
b552a30283cea1e9d3f90aef3cdd2ac24c366062
by Louis Dionne[libc++] Finish implementing P0202R3
cppreference lists the support for this paper as partial. I found 4 functions which the paper marks as `constexpr`, but did not use the appropriate macro.
Differential Revision: https://reviews.llvm.org/D84275
|
 | libcxx/include/algorithm |
 | libcxx/www/cxx2a_status.html |
 | libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp |
 | libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp |
Commit
1dac073bdd95799ae2f3a40ba2073c34fd037f1b
by joker.ephFix MLIR standalone example to properly handle namespace
ODS TableGen backend now requires to spell out which namespace they have to be nested in, in an absolute way.
|
 | mlir/examples/standalone/include/Standalone/StandaloneDialect.td |
 | mlir/examples/standalone/lib/Standalone/StandaloneOps.cpp |
 | mlir/examples/standalone/include/Standalone/StandaloneDialect.h |
 | mlir/examples/standalone/include/Standalone/StandaloneOps.h |
Commit
b3445c839fac0bbe174f85e39e9b08756c847465
by Louis Dionne[libc++][test] Portability fix of std::strstreambuf constructor test
The standard does not require the constructor `strstreambuf(streamsize alsize_arg = 0)` leave the stream array unallocated when called with parameter `alsize_arg > 0`. Conformant implementations of this constructor may allocate minimal `alsize_arg` number of bytes forcing `str()` method to return non-null pointer.
Thanks to Andrey Maksimov for the patch.
Differential Revision: https://reviews.llvm.org/D72465
|
 | libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/default.pass.cpp |
Commit
44da6c2369da239517cd073f96688895081bc395
by Lang Hames[docs] Update OrcV1 removal timeline.
|
 | llvm/docs/ORCv2.rst |
Commit
f3d834485448b42e72c2d908a8be3d02285bd660
by aeubanks[PruneEH][NFC] Use CallGraphUpdater in PruneEH
In preparation for porting the pass to NPM.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D87632
|
 | llvm/lib/Transforms/IPO/PruneEH.cpp |
Commit
5881bf0050398f4bb2d9761167d06a9ecfc8a371
by pklausler[flang] More clean-up of CookedSource API
The std::string holding the content of a CookedSource no longer needs to be exposed in its API after the recent work that allows the parsing context to hold multiple instances of a CookedSource. So clean the API. These changes were extracted from some work in progress that was made easier by the API changes.
Differential Revision: https://reviews.llvm.org/D87635
|
 | flang/lib/Lower/OpenACC.cpp |
 | flang/lib/Parser/prescan.cpp |
 | flang/unittests/Evaluate/intrinsics.cpp |
 | flang/include/flang/Semantics/semantics.h |
 | flang/tools/f18/f18.cpp |
 | flang/include/flang/Parser/parse-state.h |
 | flang/include/flang/Parser/provenance.h |
 | flang/lib/Parser/provenance.cpp |
Commit
ed653184ac6385945e32535feb7af2876ec52d40
by zoecarverRevert "[libc++] Make rotate a constexpr."
This reverts commit 1ec02efee9b1d01cde89f31ca9ba6a46b7662ac5.
|
 | libcxx/include/algorithm |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp |
 | libcxx/include/iterator |
 | libcxx/www/cxx2a_status.html |
Commit
3ed89b51da38f081fedb57727076262abb81d149
by Louis Dionne[Take 2] [libc++] Make rotate a constexpr.
This patch makes `std::rotate` a constexpr. In doing so, this patch also updates the internal `__move` and `__move_backward` funtions to be constexpr.
This patch was previously reverted in ed653184ac63 because it was missing some UNSUPPORTED markup for older compilers. This commit adds it.
Differential Revision: https://reviews.llvm.org/D65721
|
 | libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp |
 | libcxx/www/cxx2a_status.html |
 | libcxx/include/iterator |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp |
 | libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp |
 | libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp |
 | libcxx/include/algorithm |
Commit
cdbfb47998cd37ab0384ad944fa8e4ba1e1b47d0
by psteinfeld[flang] Fix bug for forward referenced type
A type name in an IMPLICIT declaration that was later used in a PARAMETER statement caused problems because the default symbol scope had not yet been initialized. I avoided dereferencing in the situation where the default scope was uninitialized and added a test that triggers the problem.
Also, once I corrected the bad dereference, the compiler was putting out misleading error messages. The underlying error us due to violating section 7.5.10, paragraph 4, which states: A structure constructor shall not appear before the referenced type is defined.
I fixed this by testing to see if a type that is used in a structure constructor is forward referenced.
Differential Revision: https://reviews.llvm.org/D87535
|
 | flang/test/Semantics/bad-forward-type.f90 |
 | flang/lib/Semantics/expression.cpp |
Commit
670c276232ec2233323fab5ad4c1aeef923e9e48
by qcolombet[GlobalISel] Add G_UNMERGE_VALUES(G_MERGE_VALUES) combine
Add the matching and applying function to the combiner helper for G_UNMERGE_VALUES(G_MERGE_VALUES).
This combine also supports any merge-like input nodes, like G_BUILD_VECTORS and is robust against bitcasts in between int unmerge and merge nodes.
When the input type of the merge node and the output type of the unmerge node are not the same, but the sizes are, the combine still applies but creates bitcasts between the sources and the destinations instead of reusing the destinations directly.
Long term, the artifact combiner should probably reuse that helper, but as of today, it doesn't use any outside helper, so I kept it this way.
Differential Revision: https://reviews.llvm.org/D87117
|
 | llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir |
 | llvm/include/llvm/Target/GlobalISel/Combine.td |
 | llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h |
 | llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp |
Commit
39ec36415df5162fcffae09fde9b931e336a6f3d
by aeubanksRevert "[docs][NewPM] Add docs for writing NPM passes"
This reverts commit c2590de30df23ef0db39b496cdec62a83a61fbfa.
Breaks shared libs build
|
 | llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn |
 | llvm/lib/Transforms/LLVMBuild.txt |
 | llvm/lib/Passes/LLVMBuild.txt |
 | llvm/include/llvm/Transforms/HelloNew/HelloWorld.h |
 | llvm/docs/WritingAnLLVMPass.rst |
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/lib/Transforms/HelloNew/LLVMBuild.txt |
 | llvm/lib/Transforms/CMakeLists.txt |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/lib/Transforms/HelloNew/CMakeLists.txt |
 | llvm/docs/WritingAnLLVMNewPMPass.rst |
 | llvm/test/Transforms/HelloNew/helloworld.ll |
 | llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn |
 | llvm/lib/Transforms/HelloNew/HelloWorld.cpp |
 | llvm/docs/UserGuides.rst |
Commit
46f9137e43f3eb2de9990765a4c482b45b0f8dd5
by aditya_nandakumar[GISel]: Add combine for G_FABS to G_FABS
https://reviews.llvm.org/D87554
Patch adds one new GICombinerRule for G_FABS. The combine rule folds G_FABS(G_FABS(X)) to G_FABS(X). Patch additionally adds new combiner tests for the AArch64 target to test this new combiner rule.
Patch by mkitzan.
|
 | llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h |
 | llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp |
 | llvm/include/llvm/Target/GlobalISel/Combine.td |
 | llvm/test/CodeGen/AArch64/GlobalISel/combine-fabs.mir |
Commit
10b12d4035de40e5eaedddda82d9c533854eefcb
by aeubanksReland [docs][NewPM] Add docs for writing NPM passes
As to not conflict with the legacy PM example passes under llvm/lib/Transforms/Hello, this is under HelloNew. This makes the CMakeLists.txt and general directory structure less confusing for people following the example.
Much of the doc structure was taken from WritinAnLLVMPass.rst.
This adds a HelloWorld pass which simply prints out each function name.
More will follow after this, e.g. passes over different units of IR, analyses. https://llvm.org/docs/WritingAnLLVMPass.html contains a lot more.
Relanded with missing "Support" dependency in LLVMBuild.txt.
Reviewed By: ychen, asbirlea
Differential Revision: https://reviews.llvm.org/D86979
|
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/docs/WritingAnLLVMNewPMPass.rst |
 | llvm/include/llvm/Transforms/HelloNew/HelloWorld.h |
 | llvm/lib/Transforms/CMakeLists.txt |
 | llvm/test/Transforms/HelloNew/helloworld.ll |
 | llvm/lib/Passes/LLVMBuild.txt |
 | llvm/lib/Transforms/HelloNew/HelloWorld.cpp |
 | llvm/lib/Transforms/HelloNew/LLVMBuild.txt |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn |
 | llvm/lib/Transforms/HelloNew/CMakeLists.txt |
 | llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn |
 | llvm/lib/Transforms/LLVMBuild.txt |
 | llvm/docs/WritingAnLLVMPass.rst |
 | llvm/docs/UserGuides.rst |
Commit
6352381039c43c66f01a23be19472f7e611ffcdf
by kparzysz[Hexagon] Some HVX DAG combines
1. VINSERTW0 x, undef -> x 2. VROR (VROR x, a), b) -> VROR x, a+b
|
 | llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp |
Commit
bb877d1af2ec2f624caa380350c8da00c984e754
by kparzysz[Hexagon] Widen loads and handle any-/sign-/zero-extensions
|
 | llvm/test/CodeGen/Hexagon/autohvx/widen-ext.ll |
 | llvm/lib/Target/Hexagon/HexagonPatternsHVX.td |
 | llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp |
 | llvm/lib/Target/Hexagon/HexagonISelLowering.cpp |
 | llvm/lib/Target/Hexagon/HexagonISelLowering.h |
Commit
f35617ad809b978635d10c0c39553840a03ac41f
by kparzysz[Hexagon] Add more detailed testcase for widening truncates
|
 | llvm/test/CodeGen/Hexagon/autohvx/widen-trunc.ll |
Commit
da55e9ba1273284f1af61bceeaeb25e487838034
by Chris.Hamilton[Sema] Address-space sensitive index check for unbounded arrays
Check applied to unbounded (incomplete) arrays and pointers to spot cases where the computed address is beyond the largest possible addressable extent of the array, based on the address space in which the array is delcared, or which the pointer refers to.
Check helps to avoid cases of nonsense pointer math and array indexing which could lead to linker failures or runtime exceptions. Of particular interest when building for embedded systems with small address spaces.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D86796
|
 | clang/test/Sema/unbounded-array-bounds.c |
 | clang/lib/Sema/SemaChecking.cpp |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
 | clang/test/Sema/const-eval.c |
 | clang/test/SemaCXX/constant-expression-cxx1y.cpp |
Commit
32515938901685bcbc438d5f5bb03cb8a9f4c637
by craig.topper[X86] Place new constant node in topological order in X86DAGToDAGISel::matchBitExtract.
Fixes PR47525
|
 | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp |
 | llvm/test/CodeGen/X86/pr47525.ll |
Commit
a36278c2f8b5ba7e964ef2cdc14ef8c3f8b8a045
by qcolombet[GlobalISel] Add G_UNMERGE(Cst) -> Cst1, Cst2, ... combine
Add a combiner helper that replaces G_UNMERGE of big constants into direct use of smaller constants.
Differential Revision: https://reviews.llvm.org/D87166
|
 | llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/sdiv.i64.ll |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/udiv.i64.ll |
 | llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/saddsat.ll |
 | llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/srem.i64.ll |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/ssubsat.ll |
 | llvm/include/llvm/Target/GlobalISel/Combine.td |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/urem.i64.ll |
Commit
1d70984fa220f966ddcecd7906c5f10368fe1b93
by Vitaly Buka[Asan] Accept __lsan_ignore_object for redzone pointer
The check that the pointer inside of the user part of the chunk does not adds any value, but it's the last user of AddrIsInside.
I'd like to simplify AsanChunk in followup patches.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87642
|
 | compiler-rt/lib/asan/asan_allocator.cpp |
 | compiler-rt/test/asan/TestCases/lsan_annotations.cpp |
Commit
e6bc7037d386184d94bf68b184d0ac62b96a4098
by listmail[AArch64] Statepoint support for AArch64.
Differential Revision: https://reviews.llvm.org/D66012 Patch By: loicottet (with major rebase by me)
|
 | llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp |
 | llvm/test/CodeGen/AArch64/statepoint-call-lowering.ll |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp |
 | llvm/lib/Target/AArch64/AArch64InstrInfo.cpp |
 | llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp |
Commit
4706880f06fbaf5f95dab2b6fd4cd2a5cf1693e6
by pklausler[flang] Allow Fortran comments after #include path
C-style /*comments*/ are removed during preprocessing directive tokenization, but Fortran !comments need to be specifically allowed.
Fixes LLVM bugzilla 47466.
Differential Revision: https://reviews.llvm.org/D87638
|
 | flang/test/Preprocessing/empty.h |
 | flang/test/Preprocessing/include-comment.F90 |
 | flang/lib/Parser/preprocessor.cpp |
Commit
da1aaa0b7080049e0d6ef82a4a6784e89c20f059
by craig.topperRevert "[X86] Place new constant node in topological order in X86DAGToDAGISel::matchBitExtract."
I got the bug number wrong.
This reverts commit 32515938901685bcbc438d5f5bb03cb8a9f4c637.
|
 | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp |
 | llvm/test/CodeGen/X86/pr47525.ll |
Commit
46673763fe598aa9d3f0edaf1ba7a1645c4eacfe
by craig.topper[X86] Place new constant node in topological order in X86DAGToDAGISel::matchBitExtract
Fixes PR47482
|
 | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp |
 | llvm/test/CodeGen/X86/pr47482.ll |
Commit
b2cf572b562048f54b774d9cef88cf792a33ab31
by pklausler[flang] Respect BZ mode in exponent parts, too
The Fortran standard discusses BZ mode (treat blanks as zero digits) explicitly in its effect on the editing of the digits prior to the exponent part, but doesn't mention it in description of the exponent part. Other compilers honor BZ mode in the exponent, so we should do so too. So "1 e 1 " is 1.E11 in BZ mode.
Differential Revision: https://reviews.llvm.org/D87653
|
 | flang/unittests/Runtime/hello.cpp |
 | flang/runtime/edit-input.cpp |
Commit
8bd0dc5bfe23fdfba110eefd33ff658289a307ab
by Louis Dionne[libc++abi] Do not declare __cxa_finalize and __cxa_atexit in <cxxabi.h>
These functions are not defined by libc++abi, so they don't belong in <cxxabi.h>.
Differential Revision: https://reviews.llvm.org/D75795
|
 | libcxxabi/include/cxxabi.h |
Commit
d2321129bda712a0e7ee222c7cb6a62e5ca5b6f4
by qcolombet[GlobalISel] Add `X,Y<dead> = G_UNMERGE Z` -> X = G_TRUNC Z
Add a combiner helper that replaces G_UNMERGE where all the destination lanes are dead except the first one with a G_TRUNC.
Differential Revision: https://reviews.llvm.org/D87174
|
 | llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp |
 | llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h |
 | llvm/include/llvm/Target/GlobalISel/Combine.td |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-llvm.amdgcn.image.store.2d.d16.ll |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizercombiner-select.mir |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn.s.buffer.load.ll |
 | llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/combine-shl-narrow.mir |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.s.buffer.load.ll |
Commit
b3afad046301d8bb1f4471aceaad704b87de3a69
by qcolombet[GlobalISel] Add a `X, Y = G_UNMERGE(G_ZEXT Z)` -> X = G_ZEXT Z; Y = 0 combine
Add a combiner helper to transform unmerge of zext into one zext and a constant 0
Differential Revision: https://reviews.llvm.org/D87427
|
 | llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/sdiv.i32.ll |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/udiv.i32.ll |
 | llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/urem.i32.ll |
 | llvm/include/llvm/Target/GlobalISel/Combine.td |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/srem.i32.ll |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/shl-ext-reduce.ll |
 | llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir |
Commit
1f837265eb082441337a42420bf415a99c3f4baa
by xun[Coroutines] Fix a typo in documentation
In the example, the variable that's crossing suspend point was referred wrongly, fix it.
Differential Revision: https://reviews.llvm.org/D83563
|
 | llvm/docs/Coroutines.rst |
Commit
042c23506869b4ae9a49d2c4bc5ea6e6baeabe78
by phosek[DebugInfo] Remove dots from getFilenameByIndex return value
When concatenating directory with filename in getFilenameByIndex, we might end up with a path that contains extra dots. For example, if the input is /path and ./example, we would return /path/./example. Run sys::path::remove_dots on the output to eliminate unnecessary dots.
Differential Revision: https://reviews.llvm.org/D87657
|
 | llvm/test/tools/llvm-symbolizer/frame-fortran.s |
 | llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp |