SuccessChanges

Summary

  1. [AArch64][GlobalISel] Add selection support for v2s32 and v2s64 reductions for FADD/ADD. (details)
  2. [llvm-objdump][test] Delete source-interleave-prefix-windows.test (details)
  3. Add support for more OS types to AddClangModuleCompilationOptionsForSDKType() (details)
  4. [llvm-objdump][test] Unsupport system-windows for source-interleave-prefix.test (details)
  5. [docs] Fix some out-of-date / inaccurate text and missing formatting in the User's Manual. (details)
  6. [mlir] Add a utility class, ThreadLocalCache, for storing non static thread local objects. (details)
  7. [mlir] Optimize symbol related checks in SymbolDCE (details)
  8. [mlir] Add a new SymbolUserOpInterface class (details)
  9. [mlir] Update SCCP and the Inliner to use SymbolTableCollection for symbol lookups (details)
  10. [AMDGPU] Run hazard recognizer pass later (details)
  11. [flang] Disallow pointer constants (details)
  12. [CGSCC] Add -abort-on-max-devirt-iterations-reached option (details)
  13. [SCEV] Add additional tests where the max BTC is limited by wrapping. (details)
  14. Revert "Recommit "[SCEV] Use nw flag and symbolic iteration count to sharpen ranges of AddRecs"" (details)
  15. [AMDGPU] Drop array size in AMDGCNGPUs and R600GPUs (details)
  16. [VectorCombine] Avoid crossing address space boundaries. (details)
  17. Extend memset-to-zero optimization to C++11 aggregate functional casts (details)
  18. Treat constant contexts as being in the default rounding mode. (details)
  19. make the AsmPrinterHandler array public (details)
  20. Fix Windows llvm-objdump tests (details)
  21. [AMDGPU] Fix gfx1032 description in AMDGPUUsage.rst. NFC. (details)
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
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/select-reduce-fadd.mir
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
The file was modifiedllvm/test/CodeGen/AArch64/arm64-vabs.ll
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/select-reduce-add.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
The file was removedllvm/test/tools/llvm-objdump/X86/source-interleave-prefix-windows.test
Commit cf245086518efbdf96c2d86697298a8da5c97669 by Adrian Prantl
Add 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
The file was modifiedlldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
Commit 08d6650b7bf2d923dfc8255c090f0fbd64f5691f by i
[llvm-objdump][test] Unsupport system-windows for source-interleave-prefix.test
The file was modifiedllvm/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.
The file was modifiedclang/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
The file was modifiedmlir/include/mlir/Support/StorageUniquer.h
The file was addedmlir/include/mlir/Support/ThreadLocalCache.h
The file was modifiedmlir/lib/Support/StorageUniquer.cpp
The file was modifiedmlir/lib/IR/MLIRContext.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
The file was modifiedmlir/include/mlir/IR/SymbolTable.h
The file was modifiedmlir/include/mlir/IR/SymbolInterfaces.td
The file was modifiedmlir/lib/IR/SymbolTable.cpp
The file was modifiedmlir/include/mlir/IR/OpDefinition.h
The file was modifiedmlir/lib/Transforms/SymbolDCE.cpp
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
The file was modifiedmlir/lib/IR/SymbolTable.cpp
The file was modifiedmlir/docs/SymbolsAndSymbolTables.md
The file was modifiedmlir/include/mlir/IR/SymbolInterfaces.td
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/Ops.td
The file was modifiedmlir/docs/Interfaces.md
The file was modifiedmlir/lib/Dialect/StandardOps/IR/Ops.cpp
The file was modifiedmlir/include/mlir/IR/SymbolTable.h
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
The file was modifiedmlir/lib/Interfaces/CallInterfaces.cpp
The file was modifiedmlir/include/mlir/Interfaces/CallInterfaces.td
The file was modifiedmlir/lib/Analysis/CallGraph.cpp
The file was modifiedmlir/lib/Transforms/Inliner.cpp
The file was modifiedmlir/include/mlir/Analysis/CallGraph.h
The file was modifiedmlir/lib/Transforms/SCCP.cpp
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
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
The file was addedllvm/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
The file was modifiedflang/test/Semantics/resolve90.f90
The file was modifiedflang/lib/Semantics/check-declarations.cpp
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
The file was modifiedllvm/include/llvm/Analysis/CGSCCPassManager.h
The file was modifiedllvm/test/Other/cgscc-devirt-iteration.ll
The file was modifiedllvm/lib/Analysis/CGSCCPassManager.cpp
Commit f085b7cbc1a673e89f74926961e44ba468411619 by flo
[SCEV] Add additional tests where the max BTC is limited by wrapping.
The file was modifiedllvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-limit-by-wrapping.ll
Commit 74c8c2d903e2c849a2132ae798018f8bbe00ea21 by nikita.ppv
Revert "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.
The file was modifiedllvm/test/Transforms/IndVarSimplify/promote-iv-to-eliminate-casts.ll
The file was modifiedllvm/include/llvm/Analysis/ScalarEvolution.h
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/test/Analysis/ScalarEvolution/no-wrap-symbolic-becount.ll
The file was modifiedllvm/test/Transforms/IndVarSimplify/X86/eliminate-trunc.ll
Commit 874524ab88a9cb8a9208be281ab5103c92b8bf15 by Stanislav.Mekhanoshin
[AMDGPU] Drop array size in AMDGCNGPUs and R600GPUs

Differential Revision: https://reviews.llvm.org/D89568
The file was modifiedllvm/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
The file was addedllvm/test/Transforms/VectorCombine/AMDGPU/as-transition.ll
The file was addedllvm/test/Transforms/VectorCombine/AMDGPU/lit.local.cfg
The file was modifiedllvm/lib/Transforms/Vectorize/VectorCombine.cpp
Commit 48c70c1664aa4512cb7e08352dd8eb33dde4807c by richard
Extend 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.
The file was modifiedclang/lib/CodeGen/CGExprAgg.cpp
The file was modifiedclang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp
Commit 7e801ca0efa99f7cec7a2aea30513ad282030b51 by richard
Treat 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
The file was modifiedclang/lib/AST/ExprConstant.cpp
The file was addedclang/test/SemaCXX/rounding-math.cpp
The file was addedclang/test/Sema/rounding-math.c
Commit ac2def2d8d8c9aa6f96f0c869a5b988ae602385a by vtjnash
make 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
The file was modifiedllvm/include/llvm/CodeGen/AsmPrinterHandler.h
The file was modifiedllvm/include/llvm/CodeGen/AsmPrinter.h
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
The file was modifiedllvm/lib/CodeGen/MachineModuleInfo.cpp
The file was modifiedllvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modifiedllvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
The file was modifiedllvm/unittests/CodeGen/TestAsmPrinter.h
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modifiedllvm/unittests/CodeGen/AsmPrinterDwarfTest.cpp
The file was modifiedllvm/include/llvm/CodeGen/DebugHandlerBase.h
The file was modifiedllvm/lib/Target/BPF/BTFDebug.cpp
Commit 66506eeb37b293b9be5b943d51ec087608396d8c by rengolin
Fix Windows llvm-objdump tests

Broken in e95f9a23fad with path issues.
The file was modifiedllvm/test/tools/llvm-objdump/X86/source-interleave-prefix-non-windows.test
The file was modifiedllvm/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
The file was modifiedllvm/docs/AMDGPUUsage.rst