LLVM/project c36b84cllvm/lib/Target/AMDGPU AMDGPULowerKernelArguments.cpp, llvm/test/CodeGen/AMDGPU lower-noalias-kernargs.ll

[AMDGPU] Fix noalias metadata for calls that capture a pointer earlier (#219887)

A call could get `!noalias` against a kernel noalias argument even when
that argument was captured into a global earlier and the call can reach
it that way

Only calls that touch just their own argument pointees are actually safe
to mark this way
DeltaFile
+234-28llvm/test/CodeGen/AMDGPU/lower-noalias-kernargs.ll
+53-50llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp
+287-782 files

LLVM/project 0465907mlir/lib/Dialect/XeGPU/Transforms XeGPUSgToLaneDistribute.cpp, mlir/test/Dialect/XeGPU sg-to-lane-distribute-unit.mlir

[mlir][xegpu] Fix lane-local classification for packed-lane-data reductions (#223077)

isReductionLaneLocal decided whether a subgroup vector.multi_reduction
reduces within a lane by comparing the result vector type against its
distributed type. This assumes the lane_layout along the non-reduction
dim is always larger than 1, which is not always true.

This PR fixes it by checking the source's lane_layout along the
reduction dimension is 1.

assisted-by-claude

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+22-0mlir/test/Dialect/XeGPU/sg-to-lane-distribute-unit.mlir
+13-8mlir/lib/Dialect/XeGPU/Transforms/XeGPUSgToLaneDistribute.cpp
+35-82 files

LLVM/project 09046d9libc/test/src/mathvec sinf_test.cpp CMakeLists.txt

[libc] Fix sinf unit test failures (#224475)

https://github.com/llvm/llvm-project/pull/224339 suppressed the tests
but the executable still runs. This change further suppressed the
executable so lit didn't discover and run it.

Bot kept failing on the libc test:
https://lab.llvm.org/buildbot/#/builders/10/builds/36051

tested locally:
>Total Discovered Tests: 817
  Passed: 817 (100.00%)
DeltaFile
+22-19libc/test/src/mathvec/CMakeLists.txt
+0-5libc/test/src/mathvec/sinf_test.cpp
+22-242 files

LLVM/project 1b1e9d1llvm/lib/Object GOFFObjectFile.cpp

Recommit [GOFFObjectFile] replace snprintf with formatv (#224435) (#224489)

Recommit [GOFFObjectFile] replace snprintf with formatv (#224435)
DeltaFile
+2-3llvm/lib/Object/GOFFObjectFile.cpp
+2-31 files

LLVM/project 5fa7f81flang/docs ReleaseNotes.md, flang/lib/Optimizer/Builder IntrinsicCall.cpp

[flang] Fix RecordType sizes, TRANSFER lowering, and BIND(C) ABI on SystemZ/PPC64le (#220377)

### Summary

`fir::getTypeSizeAndAlignment` had two bugs in its `RecordType` branch:

1. **Packed records**: `isPacked()` was ignored. LLVM packed structs
advance by `getTypeAllocSize` per field (not `getTypeStoreSize`), so
each component occupies `alignTo(storeSize, ABIalign)` bytes with no
inter-field or tail padding, and the struct ABI alignment is 1. For
example, a packed `{i32, f64}` on x86-64 is 12 bytes, not 16.

2. **Tail padding**: the unpacked field loop returned the raw summed
size without the final `alignTo(size, align)`. For example, `{i32, i8}`
(sum = 5 bytes, align = 4) was returned as 5 bytes instead of the
correct allocation size 8 bytes.

### Changes


    [30 lines not shown]
DeltaFile
+89-0flang/test/Lower/Intrinsics/transfer-rec-tail-pad.f90
+72-0flang/test/Fir/CUDA/cuda-constructor-2.f90
+56-9flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+63-0flang/test/Fir/box-elesize-canonicalize.fir
+54-0flang/docs/ReleaseNotes.md
+44-0flang/test/Fir/CUDA/cuda-shared-offset.mlir
+378-98 files not shown
+551-1614 files

LLVM/project 3ac17f2clang-tools-extra/clang-tidy/readability RedundantParenthesesCheck.cpp, clang-tools-extra/docs ReleaseNotes.md

[clang-tidy] Fix readability-redundant-parentheses false positive on typeof (#223512)

Preserve the required parentheses around the operand of `typeof`,
`typeof_unqual`, and GNU `__typeof__` by skipping `ParenExpr` nodes
whose immediate parent is a `TypeOfExprTypeLoc`. Redundant inner
parentheses such as those in `typeof((x))` are still diagnosed.

Fixes #220899.
DeltaFile
+16-0clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses-c23.c
+8-1clang-tools-extra/clang-tidy/readability/RedundantParenthesesCheck.cpp
+4-0clang-tools-extra/docs/ReleaseNotes.md
+2-0clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses.cpp
+30-14 files

LLVM/project a18489c.github/workflows test-suite.yml

[Github] Remove additional cmake install from test-suite (#224486)

Now that we are on ubuntu 26.04 we can resolve this todo as the system
CMake is new enough and already installed.
DeltaFile
+1-8.github/workflows/test-suite.yml
+1-81 files

LLVM/project 08cedc5.github/workflows subscriber.yml new-prs.yml

[Github] Fix container references from #224471 (#224490)

I screwed up some of the references (copying and pasting added an extra
sh256:) and they didn't show up because the workflow definitions for all
of these jobs only comes from main.
DeltaFile
+1-1.github/workflows/subscriber.yml
+1-1.github/workflows/new-prs.yml
+1-1.github/workflows/merged-prs.yml
+1-1.github/workflows/commit-access-greeter.yml
+4-44 files

LLVM/project f909f84mlir/lib/Dialect/XeGPU/Transforms XeGPUSgToLaneDistribute.cpp, mlir/test/Dialect/XeGPU sg-to-lane-distribute-unit.mlir

[MLIR][XeGPU]  Fix insert_strided_slice distribution divisor for partial-lane dims (#223060)

SgToLaneVectorInsertStridedSlice divided the distributed dimension's
size and offset by the full subgroup size. That divisor holds only when
the dimension spans every lane. When it spans a subset (lane_layout[dim]
< subgroupSize) — say size 2 across 2 lanes — 2 % 16 != 0 made the
pattern reject the op and failing legalization.

This PR divides the dimension size by lane_layout[destDistDim], the
number of lanes actually covering that dimension.

assisted-by-claude

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+13-12mlir/lib/Dialect/XeGPU/Transforms/XeGPUSgToLaneDistribute.cpp
+16-0mlir/test/Dialect/XeGPU/sg-to-lane-distribute-unit.mlir
+29-122 files

LLVM/project fa86d52llvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp

[SlotIndexes] Add queries for stale indexes

An erased instruction leaves its index list entry in place, making the
index indistinguishable from a block boundary entry. Add
isBlockBoundaryIndex() and isStaleIndex() to tell the two apart, and
canonicalizeIndex() to resolve a stale index to the closest preceding
instruction's register slot, or the block start if none survives.

NFC. No caller yet. LiveDebugVariables is next.
DeltaFile
+207-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+29-0llvm/lib/CodeGen/SlotIndexes.cpp
+14-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+251-04 files

LLVM/project 137285bllvm/include/llvm/CodeGen LiveDebugVariables.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveDebugVariables.cpp

[LiveDebugVariables] Repair stale SlotIndexes

The analysis keeps its indexes from before the first register allocator
until DBG_VALUEs are emitted, by which point passes in between have
erased some of the instructions they point at. Resolve them at the
start of each allocator run and before emitting.

SlotIndexes can then reclaim the entries of erased instructions without
sparing the ones held here, which would have made generated code depend
on -g. Emitted locations are unchanged, except that intervals resolving
to one position now emit a single DBG_VALUE rather than identical
consecutive ones.
DeltaFile
+135-0llvm/lib/CodeGen/LiveDebugVariables.cpp
+57-0llvm/test/DebugInfo/AMDGPU/live-debug-vars-stale-slot-indexes.ll
+8-4llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir
+8-0llvm/include/llvm/CodeGen/LiveDebugVariables.h
+7-0llvm/lib/CodeGen/RegAllocGreedy.cpp
+4-2llvm/test/CodeGen/X86/debug-spilled-snippet.ll
+219-61 files not shown
+223-87 files

LLVM/project a133404.github/workflows test-suite.yml sycl-tests.yml

[Github] Bump build workflows to Ubuntu 26.04 (#224455)

To pull in the new version of CMake and also now that the 24.04 images
won't recieve any new updates.
DeltaFile
+1-1.github/workflows/test-suite.yml
+1-1.github/workflows/sycl-tests.yml
+1-1.github/workflows/spirv-tests.yml
+1-1.github/workflows/mlir-spirv-tests.yml
+1-1.github/workflows/ci-post-commit-analyzer.yml
+5-55 files

LLVM/project 75c8398.github/workflows subscriber.yml pr-code-lint.yml

[Github] Bump non-build jobs to Ubuntu 26.04 (#224471)

Mostly so we pull in a new CMake version for the jobs that need it like
ids.
DeltaFile
+2-2.github/workflows/llvm-abi-tests.yml
+2-2.github/workflows/libclang-abi-tests.yml
+1-1.github/workflows/subscriber.yml
+1-1.github/workflows/pr-code-lint.yml
+1-1.github/workflows/pr-code-format.yml
+1-1.github/workflows/new-prs.yml
+8-83 files not shown
+11-119 files

LLVM/project a56ce73lldb/source/Symbol ObjectFile.cpp

[lldb] Don't dereference a possibly null DataExtractor in FindPlugin (#224347)

Restore the behavior from before e4c83b7b119c, which changed the
parameter from a DataBufferSP the branch guaranteed to be null-or-empty
into a DataExtractorSP it unconditionally dereferences.

No in-tree caller reaches this branch with a null extractor, so there is
no test.

rdar://168105064
DeltaFile
+3-3lldb/source/Symbol/ObjectFile.cpp
+3-31 files

LLVM/project 3d71138llvm/include/llvm/CodeGen LiveDebugVariables.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveDebugVariables.cpp

[LiveDebugVariables] Repair stale SlotIndexes

The analysis keeps its indexes from before the first register allocator
until DBG_VALUEs are emitted, by which point passes in between have
erased some of the instructions they point at. Resolve them at the
start of each allocator run and before emitting.

SlotIndexes can then reclaim the entries of erased instructions without
sparing the ones held here, which would have made generated code depend
on -g. Emitted locations are unchanged, except that intervals resolving
to one position now emit a single DBG_VALUE rather than identical
consecutive ones.
DeltaFile
+135-0llvm/lib/CodeGen/LiveDebugVariables.cpp
+57-0llvm/test/DebugInfo/AMDGPU/live-debug-vars-stale-slot-indexes.ll
+8-4llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir
+8-0llvm/include/llvm/CodeGen/LiveDebugVariables.h
+7-0llvm/lib/CodeGen/RegAllocGreedy.cpp
+4-2llvm/test/CodeGen/X86/debug-spilled-snippet.ll
+219-61 files not shown
+223-87 files

LLVM/project b03576bllvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp

[SlotIndexes] Add queries for stale indexes

An erased instruction leaves its index list entry in place, making the
index indistinguishable from a block boundary entry. Add
isBlockBoundaryIndex() and isStaleIndex() to tell the two apart, and
canonicalizeIndex() to resolve a stale index to the closest preceding
instruction's register slot, or the block start if none survives.

NFC. No caller yet. LiveDebugVariables is next.
DeltaFile
+207-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+29-0llvm/lib/CodeGen/SlotIndexes.cpp
+14-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+251-04 files

LLVM/project b489ab0llvm/lib/CodeGen TargetRegisterInfo.cpp, llvm/lib/Target/AArch64 AArch64RegisterInfo.cpp

Revert "[CodeGen][AArch64] Avoid duplicate hints in register allocation (#219007)" (#224451)

This reverts commit 6396f14184cb506420503e0a46fcf681fd91a90a.

Newly added CodeGen/MLRegAlloc/aarch64-evict-advisor-duplicate-hints.ll
is failing downstream CI's where the model name is not `release`.

Link: #219007
DeltaFile
+0-54llvm/test/CodeGen/MLRegAlloc/aarch64-evict-advisor-duplicate-hints.ll
+0-46llvm/unittests/Target/AArch64/AArch64RegisterInfoTest.cpp
+6-6llvm/lib/CodeGen/TargetRegisterInfo.cpp
+6-3llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
+12-1094 files

LLVM/project 2a4d6d4llvm/test/Transforms/ThinLTOBitcodeWriter cfi-functions-hotness.ll

TODO

Created using spr 1.3.7
DeltaFile
+1-5llvm/test/Transforms/ThinLTOBitcodeWriter/cfi-functions-hotness.ll
+1-51 files

LLVM/project 82bcb07clang/test/CodeGen builtin-clear-padding-codegen.c, clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded vunzipo.c vunzipe.c

more tests

Created using spr 1.3.7
DeltaFile
+5,753-0llvm/lib/Target/Xtensa/XtensaS3DSPInstrInfo.td
+4,402-1,088clang/test/CodeGenCXX/builtin-clear-padding-codegen.cpp
+2,801-612clang/test/CodeGen/builtin-clear-padding-codegen.c
+145-1,729clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded/vunzipe.c
+145-1,729clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded/vunzipo.c
+145-1,729clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded/vunzipe.c
+13,391-6,8871,697 files not shown
+79,140-35,2811,703 files

LLVM/project fd606c1llvm/include/llvm/ExecutionEngine/Orc RecordProxy.h LookupAndApply.h, llvm/lib/ExecutionEngine/Orc LookupAndApply.cpp

[ORC] Share one Mangler across a lookupAndApply group (#224285)

LookupPrepareFn now receives a Mangler that lookupAndApply builds once
from the search order's target triple, rather than each recordAddr /
recordProxy constructing its own per entry.
DeltaFile
+12-8llvm/include/llvm/ExecutionEngine/Orc/LookupAndApply.h
+6-6llvm/include/llvm/ExecutionEngine/Orc/RecordProxy.h
+5-1llvm/lib/ExecutionEngine/Orc/LookupAndApply.cpp
+2-2llvm/unittests/ExecutionEngine/Orc/LookupAndApplyTest.cpp
+25-174 files

LLVM/project 31f5ae6mlir/lib/Dialect/OpenACC/Transforms ACCCGToGPU.cpp, mlir/test/Dialect/OpenACC acc-cg-to-gpu-predicate-region-active-dims.mlir

[OpenACC] Honor precomputed active par dims on a predicate region (#224390)

Example:
```mlir
acc.predicate_region {
  memref.store %updated, %shared[] : memref<f64>
} {acc.active_par_dims = #acc<active_par_dims[]>}
```
Code outside a gang-level loop runs on every thread block, so the block
dims are treated as active and never predicated away. That is right for a
redundant computation, but not for an in-place update of memory the whole
launch shares: every block applies it. The attribute above was ignored
here, because only a privatization could state which dims run it
unpredicated.

Fix: honor a precomputed active set on a predicate region too. An empty
set leaves one block and one thread performing the update; listing the
thread dims of the enclosing loops keeps a work-shared update distributing
its iterations. Behavior is unchanged for a region without the attribute.
DeltaFile
+58-0mlir/test/Dialect/OpenACC/acc-cg-to-gpu-predicate-region-active-dims.mlir
+3-2mlir/lib/Dialect/OpenACC/Transforms/ACCCGToGPU.cpp
+61-22 files

LLVM/project 0dbd2c8llvm/include/llvm/CodeGen LiveDebugVariables.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveDebugVariables.cpp

[LiveDebugVariables] Repair stale SlotIndexes

The analysis keeps its indexes from before the first register allocator
until DBG_VALUEs are emitted, by which point passes in between have
erased some of the instructions they point at. Resolve them at the
start of each allocator run and before emitting.

SlotIndexes can then reclaim the entries of erased instructions without
sparing the ones held here, which would have made generated code depend
on -g. Emitted locations are unchanged, except that intervals resolving
to one position now emit a single DBG_VALUE rather than identical
consecutive ones.
DeltaFile
+135-0llvm/lib/CodeGen/LiveDebugVariables.cpp
+57-0llvm/test/DebugInfo/AMDGPU/live-debug-vars-stale-slot-indexes.ll
+8-4llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir
+8-0llvm/include/llvm/CodeGen/LiveDebugVariables.h
+7-0llvm/lib/CodeGen/RegAllocGreedy.cpp
+4-2llvm/test/CodeGen/X86/debug-spilled-snippet.mir
+219-61 files not shown
+223-87 files

LLVM/project 0516edbllvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp

[SlotIndexes] Add queries for stale indexes

An erased instruction leaves its index list entry in place, making the
index indistinguishable from a block boundary entry. Add
isBlockBoundaryIndex() and isStaleIndex() to tell the two apart, and
canonicalizeIndex() to resolve a stale index to the closest preceding
instruction's register slot, or the block start if none survives.

NFC. No caller yet. LiveDebugVariables is next.
DeltaFile
+207-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+29-0llvm/lib/CodeGen/SlotIndexes.cpp
+14-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+251-04 files

LLVM/project 6486ab3flang/test/Fir/OpenACC acc-fir-map-info-prep-types.mlir acc-fir-map-info-prep-clauses.mlir, mlir/include/mlir/Dialect/OpenACC OpenACCCGEnums.td

[OpenACC] Add a map flag for the attach/detach clause (#224433)

Example:
```fortran
!$acc enter data create(arr)
p => arr(:,1)
!$acc enter data attach(p)
```

In this code, computeDataClauseMapFlags returns no flag for
acc_attach/detach, so the resulting acc.map_info is indistinguishable
from one formed for a create/delete of the target, and the clause itself
is gone by that point.

Fix: give the attach/detach clause its own map flag.
DeltaFile
+3-3mlir/test/Conversion/OpenACCToLLVM/data-runtime.mlir
+4-1mlir/include/mlir/Dialect/OpenACC/OpenACCCGEnums.td
+4-0mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsCG.cpp
+1-1mlir/test/Conversion/OpenACCToLLVM/data.mlir
+1-1flang/test/Fir/OpenACC/acc-fir-map-info-prep-types.mlir
+1-1flang/test/Fir/OpenACC/acc-fir-map-info-prep-clauses.mlir
+14-76 files

LLVM/project 910483allvm/lib/Target/RISCV RISCVISelLowering.cpp

fixup! Add extra condition on VL
DeltaFile
+35-18llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+35-181 files

LLVM/project a4391cbllvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 splat-gather-subtree-loop-extracts.ll splat-gather-subtree-trim-revert-cost.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+301-270llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+140-153llvm/test/Transforms/SLPVectorizer/AArch64/splat-gather-subtree-satd.ll
+12-14llvm/test/Transforms/SLPVectorizer/AArch64/splat-gather-subtree-trim-revert-cost.ll
+9-6llvm/test/Transforms/SLPVectorizer/AArch64/splat-gather-subtree-loop-extracts.ll
+462-4434 files

LLVM/project b8b115dllvm/include/llvm/CodeGen LiveDebugVariables.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveDebugVariables.cpp

[LiveDebugVariables] Repair stale SlotIndexes

The analysis keeps its indexes from before the first register allocator
until DBG_VALUEs are emitted, by which point passes in between have
erased some of the instructions they point at. Resolve them at the
start of each allocator run and before emitting.

SlotIndexes can then reclaim the entries of erased instructions without
sparing the ones held here, which would have made generated code depend
on -g. Emitted locations are unchanged, except that intervals resolving
to one position now emit a single DBG_VALUE rather than identical
consecutive ones.
DeltaFile
+135-0llvm/lib/CodeGen/LiveDebugVariables.cpp
+57-0llvm/test/DebugInfo/AMDGPU/live-debug-vars-stale-slot-indexes.ll
+8-4llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir
+8-0llvm/include/llvm/CodeGen/LiveDebugVariables.h
+7-0llvm/lib/CodeGen/RegAllocGreedy.cpp
+4-2llvm/test/CodeGen/X86/debug-spilled-snippet.mir
+219-61 files not shown
+223-87 files

LLVM/project 9889b04llvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp

[SlotIndexes] Add queries for stale indexes

An erased instruction leaves its index list entry in place, making the
index indistinguishable from a block boundary entry. Add
isBlockBoundaryIndex() and isStaleIndex() to tell the two apart, and
canonicalizeIndex() to resolve a stale index to the closest preceding
instruction's register slot, or the block start if none survives.

NFC. No caller yet. LiveDebugVariables is next.
DeltaFile
+207-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+29-0llvm/lib/CodeGen/SlotIndexes.cpp
+14-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+251-04 files

LLVM/project 41b7eedlibc/src/stdio/baremetal fclose.cpp fseeko.cpp

[libc] Embeddeding API for seek and close (#221880)

This change introduces two new symbols to the embedding API hooks:
__llvm_libc_stdio_seek and __llvm_libc_stdio_close. These are used to
implement fclose, fseek, fseeko, ftell and ftello for baremetal.

The implementation was extracted from #221211.

Authored-by: voltur01
DeltaFile
+60-0libc/src/stdio/baremetal/CMakeLists.txt
+38-0libc/src/stdio/baremetal/fseek.cpp
+38-0libc/src/stdio/baremetal/ftell.cpp
+38-0libc/src/stdio/baremetal/ftello.cpp
+37-0libc/src/stdio/baremetal/fseeko.cpp
+26-0libc/src/stdio/baremetal/fclose.cpp
+237-03 files not shown
+262-29 files

LLVM/project ea158b1clang/test/CodeGen/AArch64 abi-classify-arg-types.cpp abi-classify-arg-types.c, llvm/include/llvm/ABI Types.h

[LLVMABI][AARCH64] Support homogeneous aggregate arguments (#224138)

This adds support for handling homogeneous aggregate arguments in the
AArch64 implementation of the LLVM ABI library.

This required adding a new field to the llvm::abi::Type class to track
the unadjusted alignment of the field. This meant I needed to make
updates to the CIR calling convention lowering pass, but AArch64 isn't
supported in the CIR pass yet, so that part of the change is strictly
NFC at this point.

I'm removing the aarch64-pc-windows-msvc run lines from the
abi-classify-arg-types.cpp test because the new test cases added would
land in NYI diagnostic in isPermittedToBeHomogeneousAggregate(), and
they weren't adding any unique coverage.

Assisted-by: Cursor / various models
DeltaFile
+259-60llvm/unittests/ABI/AArch64TargetInfoTest.cpp
+134-12clang/test/CodeGen/AArch64/abi-classify-arg-types.c
+65-10clang/test/CodeGen/AArch64/abi-classify-arg-types.cpp
+24-12llvm/include/llvm/ABI/Types.h
+31-0llvm/lib/ABI/Targets/AArch64.cpp
+28-0llvm/unittests/ABI/TypesTest.cpp
+541-9410 files not shown
+612-11416 files