[DWARFLinker] Treat DW_AT_LLVM_alloc_type as a type reference (#211655)
The parallel linker's getODRAttributes() did not list
`DW_AT_LLVM_alloc_type`, so the dependency tracker treated it as a live
reference rather than a type reference. A type reachable only through
DW_AT_LLVM_alloc_type was therefore never kept: the enclosing subprogram
is marked live, and its type-table-candidate children are skipped during
live marking on the assumption they are retained through the type path.
The attribute then resolved to offset 0, landing on the compile unit
header, which got correctly caught by the DWARF verifier.
The classic linker already lists `DW_AT_LLVM_alloc_type` in
isODRAttribute(), so this PR restores parity between the two.
Assisted-by: Claude
rdar://182715403
[x86] Handle implicit sections when determining if a global is large (#206210)
Just like explicit sections.
We were seeing globals with implicit sections marked large under the
medium code model.
Reland of #204247, with a fix to not crash on declarations with an
explicit section. Implicit sections are not applied to declarations, so
don't check isDeclarationForLinker() globals for implicit sections.
Assisted-by: Gemini
[docs] Clean up migrated Clang InternalsManual markup
Replace migrated blockquote markup in InternalsManual.md with MyST definition lists where the surrounding text is semantically a term-and-definition list.
[docs] Rename selected Clang docs to Markdown
Rename 18 Clang documentation files from .rst to .md. The clang-format generated docs are split into users/rnk/clang-format-md-rename and users/rnk/clang-format-md-write for separate review.
[SLP]Remove accidental commenting out the code
Removed the accindentally commented out code, causing regressions with
ordered reductions
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/211662
[SSAF] Fix a stage2 test failure with ASan-instrumented clang (#211432)
ASan emits a symbol for a static global in `TestTransformation.cpp` that
causes link issues in green dragon.
Added `__attribute__((no_sanitize("address")))` to that static global to
fix the test.
rdar://182623740
[NFC][AMDGPU] Remove unused -SDAG test suffixes from minimumnum/maximumnum (#211634)
Test checks diff is automatically generated using
`update_llc_test_checks.py`
Discussed in https://github.com/llvm/llvm-project/pull/207896
[mlir][xegpu] Support N-D block transfers in VectorToXeGPU (#210527)
Extend the vector.transfer_read/transfer_write lowerings so they can
produce N-D xegpu.load_nd/store_nd, not just 1D/2D, and relax the
out-of-bounds handling to match load_nd's implicit-zero padding.
Restructure both patterns as "block first, then scatter as fallback.
---------
Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
[mlir][OpenACC] Emit multi-IV tile and element loops from ACCLoopTiling (#211651)
`ACCLoopTiling` used to lower an N-dimensional `tile()` clause by
*uncollapsing* the fused loop into a deep nest of single-IV `acc.loop`s
(`tile_1 → … → tile_N → elem_1 → … → elem_N`). This discards the natural
grouping of the tile clause: the 2N single-IV loops no longer express
"these are the tile iterations" and "these are the in-tile iterations"
as collapsible units, and gang/vector end up spread across a deep nest
where only the outermost loop of each group carries the attribute. This
could potentially lead to poor parallelism assignment.
With this MR:
`tileACCLoops` now rewrites the single fused `acc.loop` in-place into
exactly two multi-IV loops, each carrying all the tiled induction
variables:
- a **tile-group** loop whose steps are the original steps scaled by the
tile sizes, and
- a nested **element-group** loop that walks the iterations within one
tile, with upper bounds clamped to `min(origUB, tileStart +
[17 lines not shown]
[mlir][acc] Allow for existing declare globals in GPU module under unified memory. (#211650)
OpenACC declare globals may already exist in the GPU module from earlier
GPU lowering. Under unified memory, this pass expects those device
copies as declarations, but a pre-existing global may still have an
initializer and therefore not match.
This change adapts an otherwise equivalent existing GPU global to
declaration form and reuses it; A lit test covers a host/GPU declare
global that should be reused as a declaration in the GPU module.
[LICM] Allow hoisting of InsertElementInst's past non-hoistable InsertElementInsts (#211414)
When building vectors from multiple scalars in a loop, allow the
insertions using invariant data to be hoisted, even if blocked by the
variant insertions.
In the SLP vectorizer, c1b37eacbf makes the assumption that these build
vectors will properly be hoisted, when they are not leads to regressions
such as #195497.
Reland of #200532.
Assisted By: Codex
Co-authored-by: Luke Lau <luke_lau at icloud.com>
Co-authored-by: Nikita Popov <github at npopov.com>
[LV] Remove unused cost model from InnerLoopVectorizer (NFC) (#211594)
InnerLoopVectorizer stored a LoopVectorizationCostModel pointer (Cost)
but all users have been removed.
[mlir][gpu] Add VectorToXeGPU and adjust VectorToSCF placement in XeVM pipeline (#210539)
Add convert-vector-to-xegpu (nested under gpu.module) to lower
kernel-side vector ops to XeGPU.
Move convert-vector-to-scf from the pre-GPU common pipeline into the
post-GPU pipeline, so host transfer ops (and any SCF the pass emits) are
lowered to loops before the vector-to-LLVM conversion.
---------
Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
[flang][OpenMP] Switch TableGen generation to use llvm::EnumSet
Replace the remaining uses of the common::EnumSet-based OmpClauseSet to
llvm::omp::ClauseSet.