Commit
39c05a1a7153379f308a080b3efc5ba3ccc8be0d
by Amara Emerson[AArch64][GlobalISel] Add selection support for v2s32 and v2s64 reductions for FADD/ADD.
We'll need legalizer lower() support for the other types to work.
Differential Revision: https://reviews.llvm.org/D89159
|
 | llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp |
 | llvm/test/CodeGen/AArch64/GlobalISel/select-reduce-add.mir |
 | llvm/test/CodeGen/AArch64/arm64-vabs.ll |
 | llvm/test/CodeGen/AArch64/GlobalISel/select-reduce-fadd.mir |
Commit
0b1b2a180c66d894da3202b2b56a8e11be5f7a08
by i[llvm-objdump][test] Delete source-interleave-prefix-windows.test
It needs more work: http://45.33.8.238/win/25999/step_11.txt
|
 | llvm/test/tools/llvm-objdump/X86/source-interleave-prefix-windows.test |
Commit
cf245086518efbdf96c2d86697298a8da5c97669
by Adrian PrantlAdd support for more OS types to AddClangModuleCompilationOptionsForSDKType()
This patch also avoids hardcoding the clang options, which makes it less likely for them to become out-of-date.
rdar://problem/63791367+66927829
Differential Revision: https://reviews.llvm.org/D89428
|
 | lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp |
Commit
08d6650b7bf2d923dfc8255c090f0fbd64f5691f
by i[llvm-objdump][test] Unsupport system-windows for source-interleave-prefix.test
|
 | llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test |
Commit
dd4e8a54b2ba9cec78441ba537b94f4eaa5acd84
by richard[docs] Fix some out-of-date / inaccurate text and missing formatting in the User's Manual.
|
 | clang/docs/UsersManual.rst |
Commit
f3df3b58e7dd7c400f9c18d16d92631823705ebd
by riddleriver[mlir] Add a utility class, ThreadLocalCache, for storing non static thread local objects.
(Note: This is a reland of D82597)
This class allows for defining thread local objects that have a set non-static lifetime. This internals of the cache use a static thread_local map between the various different non-static objects and the desired value type. When a non-static object destructs, it simply nulls out the entry in the static map. This will leave an entry in the map, but erase any of the data for the associated value. The current use cases for this are in the MLIRContext, meaning that the number of items in the static map is ~1-2 which aren't particularly costly enough to warrant the complexity of pruning. If a use case arises that requires pruning of the map, the functionality can be added.
This is especially useful in the context of MLIR for implementing thread-local caching of context level objects that would otherwise have very high lock contention. This revision adds a thread local cache in the MLIRContext for attributes, identifiers, and types to reduce some of the locking burden. This led to a speedup of several seconds when compiling a somewhat large mlir module.
Differential Revision: https://reviews.llvm.org/D89504
|
 | mlir/include/mlir/Support/ThreadLocalCache.h |
 | mlir/lib/IR/MLIRContext.cpp |
 | mlir/include/mlir/Support/StorageUniquer.h |
 | mlir/lib/Support/StorageUniquer.cpp |
Commit
7bc7d0ac7ae2e2c578463758422214e80ce5e056
by riddleriver[mlir] Optimize symbol related checks in SymbolDCE
This revision contains two optimizations related to symbol checking: * Optimize SymbolOpInterface to only check for a name attribute if the operation is an optional symbol. This removes an otherwise unnecessary attribute lookup from a majority of symbols. * Add a new SymbolTableCollection class to represent a collection of SymbolTables. This allows for perfoming non-flat symbol lookups in O(1) time by caching SymbolTables for symbol table operations. This class is very useful for algorithms that operate on multiple symbol tables, either recursively or not.
Differential Revision: https://reviews.llvm.org/D89505
|
 | mlir/include/mlir/IR/SymbolInterfaces.td |
 | mlir/lib/Transforms/SymbolDCE.cpp |
 | mlir/include/mlir/IR/OpDefinition.h |
 | mlir/lib/IR/SymbolTable.cpp |
 | mlir/include/mlir/IR/SymbolTable.h |
Commit
71eeb5ec4d6edbbef31fec83fe75933d48f101df
by riddleriver[mlir] Add a new SymbolUserOpInterface class
The initial goal of this interface is to fix the current problems with verifying symbol user operations, but can extend beyond that in the future. The current problems with the verification of symbol uses are: * Extremely inefficient: Most current symbol users perform the symbol lookup using the slow O(N) string compare methods, which can lead to extremely long verification times in large modules. * Invalid/break the constraints of verification pass If the symbol reference is not-flat(and even if it is flat in some cases) a verifier for an operation is not permitted to touch the referenced operation because it may be in the process of being mutated by a different thread within the pass manager.
The new SymbolUserOpInterface exposes a method `verifySymbolUses` that will be invoked from the parent symbol table to allow for verifying the constraints of any referenced symbols. This method is passed a `SymbolTableCollection` to allow for O(1) lookups of any necessary symbol operation.
Differential Revision: https://reviews.llvm.org/D89512
|
 | mlir/include/mlir/IR/SymbolInterfaces.td |
 | mlir/include/mlir/Dialect/StandardOps/IR/Ops.td |
 | mlir/lib/Dialect/StandardOps/IR/Ops.cpp |
 | mlir/docs/SymbolsAndSymbolTables.md |
 | mlir/include/mlir/IR/SymbolTable.h |
 | mlir/docs/Interfaces.md |
 | mlir/lib/IR/SymbolTable.cpp |
Commit
a5ea60456c16faf7c75df98b03d5de5b9b6f506d
by riddleriver[mlir] Update SCCP and the Inliner to use SymbolTableCollection for symbol lookups
This transforms the symbol lookups to O(1) from O(NM), greatly speeding up both passes. For a large MLIR module this shaved seconds off of the compilation time.
Differential Revision: https://reviews.llvm.org/D89522
|
 | mlir/lib/Transforms/Inliner.cpp |
 | mlir/lib/Analysis/CallGraph.cpp |
 | mlir/lib/Interfaces/CallInterfaces.cpp |
 | mlir/lib/Transforms/SCCP.cpp |
 | mlir/include/mlir/Analysis/CallGraph.h |
 | mlir/include/mlir/Interfaces/CallInterfaces.td |
Commit
978fbd8268ce5f5cd01ae9fc41cd03ea7a08dabe
by Austin.Kerbow[AMDGPU] Run hazard recognizer pass later
If instructions were removed in peephole passes after the hazard recognizer was run it is possible that new hazards could be introduced.
Fixes: SWDEV-253090
Reviewed By: rampitec, arsenm
Differential Revision: https://reviews.llvm.org/D89077
|
 | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp |
 | llvm/test/CodeGen/AMDGPU/hazard-pass-ordering.mir |
Commit
f2897b8f45c1df944e45f849757d2a2507e96805
by psteinfeld[flang] Disallow pointer constants
None of the other Fortran compilers allow them.
Differential Revision: https://reviews.llvm.org/D89581
|
 | flang/lib/Semantics/check-declarations.cpp |
 | flang/test/Semantics/resolve90.f90 |
Commit
faf521042098f3780a8b12698260833d9c980b62
by aeubanks[CGSCC] Add -abort-on-max-devirt-iterations-reached option
Aborts if we hit the max devirtualization iteration. Will be useful for testing that changes to devirtualization don't cause devirtualization to repeat passes more times than necessary.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D89519
|
 | llvm/include/llvm/Analysis/CGSCCPassManager.h |
 | llvm/test/Other/cgscc-devirt-iteration.ll |
 | llvm/lib/Analysis/CGSCCPassManager.cpp |
Commit
f085b7cbc1a673e89f74926961e44ba468411619
by flo[SCEV] Add additional tests where the max BTC is limited by wrapping.
|
 | llvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-limit-by-wrapping.ll |
Commit
74c8c2d903e2c849a2132ae798018f8bbe00ea21
by nikita.ppvRevert "Recommit "[SCEV] Use nw flag and symbolic iteration count to sharpen ranges of AddRecs""
This reverts commit 32b72c3165bf65cca2e8e6197b59eb4c4b60392a.
While better than before, this change still introduces a large compile-time regression (>3% on mafft): https://llvm-compile-time-tracker.com/compare.php?from=fbd62fe60fb2281ca33da35dc25ca3c87ec0bb51&to=32b72c3165bf65cca2e8e6197b59eb4c4b60392a&stat=instructions
Additionally, the logic here doesn't look quite right to me, I will comment in more detail on the differential revision.
|
 | llvm/include/llvm/Analysis/ScalarEvolution.h |
 | llvm/lib/Analysis/ScalarEvolution.cpp |
 | llvm/test/Transforms/IndVarSimplify/X86/eliminate-trunc.ll |
 | llvm/test/Transforms/IndVarSimplify/promote-iv-to-eliminate-casts.ll |
 | llvm/test/Analysis/ScalarEvolution/no-wrap-symbolic-becount.ll |
Commit
874524ab88a9cb8a9208be281ab5103c92b8bf15
by Stanislav.Mekhanoshin[AMDGPU] Drop array size in AMDGCNGPUs and R600GPUs
Differential Revision: https://reviews.llvm.org/D89568
|
 | llvm/lib/Support/TargetParser.cpp |
Commit
c36c0fabd17a57513fa00ebd5579f307f889cb64
by tra[VectorCombine] Avoid crossing address space boundaries.
We can not bitcast pointers across different address spaces, and VectorCombine should be careful when it attempts to find the original source of the loaded data.
Differential Revision: https://reviews.llvm.org/D89577
|
 | llvm/test/Transforms/VectorCombine/AMDGPU/as-transition.ll |
 | llvm/test/Transforms/VectorCombine/AMDGPU/lit.local.cfg |
 | llvm/lib/Transforms/Vectorize/VectorCombine.cpp |
Commit
48c70c1664aa4512cb7e08352dd8eb33dde4807c
by richardExtend memset-to-zero optimization to C++11 aggregate functional casts Aggr{...}.
We previously missed these cases due to not stepping over the additional AST nodes representing their syntactic form.
|
 | clang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp |
 | clang/lib/CodeGen/CGExprAgg.cpp |
Commit
7e801ca0efa99f7cec7a2aea30513ad282030b51
by richardTreat constant contexts as being in the default rounding mode.
This addresses a regression where pretty much all C++ compilations using -frounding-math now fail, due to rounding being performed in constexpr function definitions in the standard library.
This follows the "manifestly constant evaluated" approach described in https://reviews.llvm.org/D87528#2270676 -- evaluations that are required to succeed at compile time are permitted even in regions with dynamic rounding modes, as are (unfortunately) the evaluation of the initializers of local variables of const integral types.
Differential Revision: https://reviews.llvm.org/D89360
|
 | clang/lib/AST/ExprConstant.cpp |
 | clang/test/Sema/rounding-math.c |
 | clang/test/SemaCXX/rounding-math.cpp |
Commit
ac2def2d8d8c9aa6f96f0c869a5b988ae602385a
by vtjnashmake the AsmPrinterHandler array public
This lets external consumers customize the output, similar to how AssemblyAnnotationWriter lets the caller define callbacks when printing IR. The array of handlers already existed, this just cleans up the code so that it can be exposed publically.
Differential Revision: https://reviews.llvm.org/D74158
|
 | llvm/include/llvm/CodeGen/DebugHandlerBase.h |
 | llvm/include/llvm/CodeGen/AsmPrinterHandler.h |
 | llvm/include/llvm/CodeGen/AsmPrinter.h |
 | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp |
 | llvm/unittests/CodeGen/AsmPrinterDwarfTest.cpp |
 | llvm/unittests/CodeGen/TestAsmPrinter.h |
 | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp |
 | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h |
 | llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp |
 | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp |
 | llvm/lib/CodeGen/MachineModuleInfo.cpp |
 | llvm/lib/Target/BPF/BTFDebug.cpp |
Commit
66506eeb37b293b9be5b943d51ec087608396d8c
by rengolinFix Windows llvm-objdump tests
Broken in e95f9a23fad with path issues.
|
 | llvm/test/tools/llvm-objdump/X86/source-interleave-prefix-non-windows.test |
 | llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test |
Commit
173389e16d32521ee8160b97f31daefcdd78fa2e
by Stanislav.Mekhanoshin[AMDGPU] Fix gfx1032 description in AMDGPUUsage.rst. NFC.
Differential Revision: https://reviews.llvm.org/D89565
|
 | llvm/docs/AMDGPUUsage.rst |