[flang][cuda] Avoid false positive on multi device symbol with components (#192177)
Semantic was wrongly flagging derived-type components as two device
resident object. Update how we collect symbols and count the number of
device resident object.
[CIR][ABI] Handle callee-destructed params for trivial_abi (#191257)
Replace errorNYI for isParamDestroyedInCallee with working
implementation: create aggregate temp, mark externally destructed,
emit expr. Unblocks [[trivial_abi]] types on Itanium ABI.
Adds trivial-abi.cpp test covering 17 cases from
CodeGenCXX/trivial_abi.cpp with CIR/LLVM/OGCG checks.
Made with [Cursor](https://cursor.com)
[CIR][ABI][NFC] Add x86_64 ABI parity tests (#191259)
Add three test files for CIR ABI parity on x86_64, all with
CIR/LLVM/OGCG checks:
- uncopyable-args.cpp — 24 functions covering non-copyable and
move-only types (trivial, default-ctor, move-ctor, etc.)
- x86_64-arguments.cpp — 26 functions covering C++ struct passing,
inheritance, member pointers, empty bases, packed structs
- attr-noundef.cpp — 26 functions covering noundef placement on
structs, unions, vectors, member pointers, _BitInt
Made with [Cursor](https://cursor.com)
[CIR][NFC] Convert MissingFeatures::requiresCleanups to errorNYI (#192350)
This change adds errorNYI calls in two places that we previously had
requiresCleanups() missing features markers, adds a more specific
missing feature marker for loops, removes one requiresCleanups() where
the handling was already implemented, and deletes a bunch of missing
feature markers there were never used.
[BOLT][Passes] use ADT containers for instrumentation spanning tree. (#192289)
Swap `std::unordered_map<…, std::set<…>>` for
`DenseMap<…, SmallVector<…>>` in `Instrumentation::instrumentFunction`
and switch read paths from `STOutSet[&BB]` to `find()`. This removes
per-set heap allocations, stops inserting empty buckets on every probe,
and replaces linear `is_contained()` scans over a red-black tree with
linear scans over inline `SmallVector` storage (most basic blocks have
at most a couple of spanning-tree out-edges). NFC.
[CIR][CUDA] Do Runtime Kernel Registration (#188926)
Related:
https://github.com/issues/assigned?issue=llvm%7Cllvm-project%7C179278,https://github.com/llvm/llvm-project/issues/175871
More registration shenanigans -> Generates `__cuda_register_globals`
that associates the fatbin with kernels that contain `__global__`
qualifiers with the runtime.
Generated equivalent runtime code:
``` C
// Called once per kernel to register it with the CUDA runtime.
void __cuda_register_globals(void **fatbinHandle) {
__cudaRegisterFunction(
fatbinHandle,
(const char *)&_Z25__device_stub__kernelfunciii, // host-side stub ptr
(char *)__cuda_kernelname_str, // device-side mangled name
[13 lines not shown]
[CIR] Add address space casts for pointer arguments when creating a call (#192303)
This patch checks if the expected type for an argument is the same as
the actual type. If types are pointers but with different address spaces
then add an address space cast to make the pointer types match.
Assised-by: Cursor / Claude Opus 4.6
[MLIR][XeGPU] Remove create tdesc & update offset op from xegpu dialect (#182804)
This PR removes create_tdesc and update_offset ops from the XeGPU
dialect, as scatter load/store/prefetch now accept memref+offsets
directly.
[VPlan] Remove VPConstantInt restriction for epilogue fold (NFC) (#192345)
The restriction is not needed currently. Removing it generalizes the
pattern in preparation of future changes.
[CIR] Simplify expr with cleanup scopes (#192344)
This change simplifies the level of scopes we build around aggregate
expressions with cleanups and return values involving expressions with
cleanups. This removes unnecessary scopes and lexical scopes that were
created around the expressions and brings the code back into alignment
with the corresponding classic codegen implementation of these handlers.
[mlir][SPIR-V] Reject initializer on Import-linkage GlobalVariable (#192302)
Per the SPIR-V spec, a module-scope OpVariable with Import linkage must
not have an initializer