Reland "AMDGPU/PromoteAlloca: Always use i32 for indexing (#170511)" (#170956)
Create more canonical code that may even lead to slightly better
codegen.
[clang-tidy][NFC] Remove unused headers (flagged by misc-include-cleaner) (#170982)
But `misc-include-cleaner` still has reasonable amount of FP in
codebase, so we can't enable it clang-tidy.
[PHIElimination] Declare MachineLoopInfo dependency for Legacy PM (#169693)
PHIElimination uses MachineLoopInfo for loop-exiting critical edge
splitting but wasn't declaring this dependency via addUsedIfAvailable()
in getAnalysisUsage(). Without this declaration, the pass manager does
not make MachineLoopInfo accessible to PHIElimination, causing
getAnalysisIfAvailable() to return nullptr.
Without MachineLoopInfo, the loop-exiting edge optimization doesn't
fire, resulting in fewer critical edge splits and potentially suboptimal
code placement.
This patch adds:
- MachineLoopInfo as an optional dependency
- A test that verifies the optimization fires when MLI is accessible
[libc++] Applied `[[nodiscard]]` to `<exception>`, `<stdexcept>` and `<system_error>` (#170837)
[[nodiscard]] should be applied to functions where discarding the return
value is most likely a correctness issue.
- https://libcxx.llvm.org/CodingGuidelines.html
[clang-tidy] Show descriptive error message when check_alphabetical_order.py fails (#170975)
Now we give clearer instructions on how to interpret the output of the
script to fix issues it reported
[openmp][NFCI] Move .mod code out of runtimes subdir (#169909)
Extracted out of #169638. The motivation is that we want to build
Fortran module files for device triples (amdgpu-amd-amdhsa and
nvptx64-nvidia-cuda) as well, but the runtimes/ directory is only
included for host devices.
This PR itself should not change anything, including that omp_lib.mod is
only built on host devices triple. Some dependencies used for building
omp_lib.mod are hoisted out of runtimes/ as well. IMHO they all make
sense to hoist, e.g. LIBOMP_VERSION_MAJOR/LIBOMP_VERSION_MINOR should be
usable in the entire OpenMP subproject.
[clang-tidy] Show correct diff instructions when check_alphabetical_order.py fails (#170971)
Before the change, when given such incorrect ordering:
```
:doc:`modernize-use-designated-initializers <modernize/use-designated-initializers>`, "Yes"
:doc:`modernize-use-equals-default <modernize/use-equals-default>`, "Yes"
:doc:`modernize-use-emplace <modernize/use-emplace>`, "Yes"
:doc:`modernize-use-equals-delete <modernize/use-equals-delete>`, "Yes"
:doc:`modernize-use-integer-sign-comparison <modernize/use-integer-sign-comparison>`, "Yes"
```
Script output suggested removing `modernize-use-equals-default` line
that came after `modernize-use-emplace` but in my actual file, we can
see that current ordering is different (same as 2nd part of the diff):
```
# | :doc:`modernize-use-constraints <modernize/use-constraints>`, "Yes"
# | :doc:`modernize-use-default-member-init <modernize/use-default-member-init>`, "Yes"
# | :doc:`modernize-use-designated-initializers <modernize/use-designated-initializers>`, "Yes"
# | :doc:`modernize-use-emplace <modernize/use-emplace>`, "Yes"
# | - :doc:`modernize-use-equals-default <modernize/use-equals-default>`, "Yes"
[13 lines not shown]
[MLIR] Update broken link in LangRef.md (#170938)
Noticed the link was dead when reading the docs. According to the
wayback machine, it was a link to "Revisiting Out-of-SSA Translation for
Correctness, Code Quality, and Efficiency" by Boissinot et al., so
providing a more permanent link.
[AMDGPU] Eliminate InstCombineTables.td. NFC. (#170857)
This also eliminates the generated file InstCombineTables.inc which was
99% identical to the existing AMDGPUGenSearchableTables.inc.
[MLIR][XeGPU] Retain anchor op layouts for XeGPU nD ops (#170934)
This PR adds support to retain the anchor op layouts (after dropping
what's not required) for xegpu nD ops during workgroup to subgroup &
unroll transformation
[clang][bytecode] Allocate InitMaps via Program/InterpState allocators (#170272)
Save them as a pointer intead of using a shared_ptr. This we we can use
the pointer integer value to differentiate the "no initmap yet" and "all
values initialzed" cases.
This regresses one test case in const-eval.c, but as it turns out, that
only worked coincidentally before.
[OpenMP] Fix defaultmap(firstprivate:pointer) handling (#169622)
This fixes a bug where pointers from defaultmap(firstprivate:pointer)
were incorrectly treated as firstprivate literals, causing
OMP_MAP_LITERAL to be set. This prevented the runtime from performing
device address lookup.
Realted PR https://github.com/llvm/llvm-project/pull/167879
Co-authored-by: Sairudra More <moresair at pe31.hpc.amslabs.hpecorp.net>
[MemProf] Add option to print function GUIDs during matching (#170946)
For debugging, add -memprof-print-function-guids option that will cause
memprof matching to emit the computed function GUID for every function
definition in the module to stderr. This is helpful because the profile
only contains the function GUID and not the names.