[flang][OpenMP] Switch clause verification to descriptor-based
Delete all the scattered pieces of clause verification that are now
replaced by the unified handling.
[llvm-readobj][docs] Update the --stack-sizes description
The description said that --stack-sizes is only implemented for GNU
style output, which hasn't been the case for a while. Describe the LLVM
and JSON output instead, including the address that each entry in a
linked file now has.
Assisted-by: Gemini
Pass the address to printStackSizeEntry only for a linked file
The printer no longer decides based on the file type, and the comments
no longer describe the value in a relocatable file.
[SimplifyCFG] Merge identical landing pads when the successor has phis (#230789)
tryToMergeLandingPad bailed out if the shared successor started with a phi.
Allow the merge when every phi gets the same value from both pads, or each
pad's own landingpad value, and the landingpads have no other uses (with a
loop through the successor such a use would be clobbered on re-entry).
Fixes #219628
[flang][OpenMP] Switch clause verification to descriptor-based
Delete all the scattered pieces of clause verification that are now
replaced by the unified handling.
[flang][OpenMP] Improve diagnostics about modifier properties (#229526)
Use OpenMPDeprecated and OpenMPFuture warning categories for modifier
diagnostics as well, analogously to how they are used for clauses.
[AMDGPU] Ignore trailing debug instructions after simulated traps (#233071)
`insertSimulatedTrap` treated a trailing debug instruction as executable
content, splitting the block and emitting a redundant
`s_cbranch_execnz`. This made debug information change generated code in
both SelectionDAG and GlobalISel.
Use `next_nodbg` when deciding whether instructions remain after the
trap, while keeping pseudo probes as split triggers. The trailing debug
record remains in the trap block. The regression test covers both
instruction selectors.
[libc] Use a syscall wrapper for `sched_getcpu` (#233011)
This PR move `sched_getcpu` behind the centralized syscall wrappers,
following `libc/docs/dev/syscall_wrapper_refactor.md`.
[AArch64] Extend SQABS instruction-selection tests
Add baseline coverage for big-endian and fixed-length SVE lowering, 64-bit clamp controls and multiple uses, dynamic SVE predicates, and sign-bit folding.
[AArch64] Select vector SQABS with TableGen patterns
Keep umin(abs(X), signed_max) available to generic DAG combines until instruction selection. Match Neon and predicated SVE forms in TableGen, including expanded 64-bit min/max and fixed-length SVE lowering, and remove the early combine and its vector-only SQABS node support.
Preserve existing scalar and intrinsic selection. The late patterns also recognize matching dynamic SVE predicates and fixed vectors legalized through SVE.
[SLP][X86]Model rsqrt estimate folding for vector square roots
Pass the scalar call as the context of the vector intrinsic cost, check
the estimate for the legalized type, and charge the insertion of the
folded square roots, which lose the folding.
Improves perf in gromacs
https://godbolt.org/z/j5396esfa
Assisted-by: Cursor
Reviewers: RKSimon, phoebewang
Pull Request: https://github.com/llvm/llvm-project/pull/232073
[lld-macho] Build the export trie by edges, not bytes (NFC)
Emit singleton suffixes directly and scan common prefixes in one pass,
avoiding repeated byte-wise partitioning. Preserve radix traversal,
node allocation order, and terminal encoding.
On a Ryzen 7 7700, a rust-analyzer debug link with 248,607 exports
changes from 2079 to 1948 ms at one thread and 1269 to 1185 ms at
eight threads (median wall times over four interleaved pairs).
[GlobalISel] Clear debug locations on static alloca frame indices (#232674)
Disabling Localizer at -O0 (#231406) exposed a case where a static
alloca’s frame address is materialized before the source line attached
to the alloca. Copying that location onto the frame index makes the
debug line table report the later line too early. Clear the frame
index’s debug location.
Assisted-by: codex
[OpenMP][lit] Disable flaky tasking/issue-94260-2.c on s390x too (#233384)
b217e5c5a035 marked this test UNSUPPORTED on x86 Linux because it fails
sporadically; the underlying problem is tracked in #176451, which is
still open. The arch qualifier keeps it enabled everywhere else, so the
s390x bot still runs it and hits the same failure. In the last 100
builds of openmp-s390x-linux (28089-28188), it was the only failing test
in each of the 4 failed builds:
https://lab.llvm.org/buildbot/#/builders/88/builds/28117https://lab.llvm.org/buildbot/#/builders/88/builds/28151https://lab.llvm.org/buildbot/#/builders/88/builds/28186https://lab.llvm.org/buildbot/#/builders/88/builds/28188
In 28188 it crashed with SIGSEGV and no output, and the only change in
the blamelist was a documentation fix (#232296). Add s390x to the arch
list so the bot stops blaming unrelated commits while #176451 is open.
Co-authored-by: Cursor <cursoragent at cursor.com>
[NFC][AArch64] Rename RegPairs to RegGroups (#233393)
This PR is preparation for 2 subsequent PRs which enable quad ZPR
spills.
This PR is purely cosmetic and no correctness change is included.
[AArch64][TTI] Cost the Ands of a NEON bit select as free
Or(And(M, A), And(Not(M), B)) selects to a single BSL/BIT/BIF. Charge the
Or and treat the single-use Ands in its block as free, using the matcher
shared with operand sinking.
[AArch64][TTI] Drop requirements for BSL non-mask operands for sinking (#232785)
This change moves the BSL matching into a matchBSL helper so later
patches can reuse it.
It also stops requiring the non-mask operands to be instructions in the
Or's block, since they're never sunk. This lets the not of the mask sink,
so ISel forms bif/bsl.
[DAGCombiner] Fix pointer info for widened load from different objs (#231533)
Similarly to fc26ab36a20a63c5aef5c46e2b7815b5369025a0 but for loads: a
widened load may reference memory from different underlying objects
(e.g. when they're in adjacent fixed stack slots).
Reusing the pointer info from the first load on the widened load would
cause the machine scheduler to miss dependencies between the wide load
and operations involving the other objects.
Fixes #231135