[mlir][MemRefToLLVM] Cast dealloc pointer back to address space 0 (#237806)
`DeallocOpLowering` passes the allocated pointer from the memref
descriptor straight to `free`. For a memref in a non-default memory
space, e.g. `memref<4xf32, 1>`, that pointer is `!llvm.ptr<1>`, because
the alloc lowering casts the result of `malloc` into the memref's
address space. `free` takes a plain `!llvm.ptr`, so the generated
`llvm.call` fails the verifier with an operand type mismatch. Unranked
memrefs such as `memref<*xf32, 1>` hit the same error.
Cast the pointer back to the default address space before the call,
undoing the cast done on the alloc side, and add tests for the ranked
and unranked cases.
Fixes #236924
Fixup rust-1.98 riscv64 bootstrap used to build rust-1.99
Somehow the previous one was broken with what looked like
a non-reproducible getxecpath-related error.
ok semarie@ (maintainer)
[AMDGPU] Support FLAT_SCRATCH in SILoadStoreOptimizer const offset promotion (#212507)
Add a 32-bit base/offset extraction path for the V_ADD_U32_e64 pattern
used by FLAT_SCRATCH vaddr and enable promoteConstantOffsetToImm for
FLAT_SCRATCH instructions that have a vaddr operand.
devel/google-cloud-cpp: Update to 3.13.0
- opentelemetry-cpp is now a required dependency; crc32c is no
longer used (Abseil's implementation is used instead).
- Drop CMake options that are no longer used by 3.x.
- Use GOOGLE_CLOUD_CPP_OVERRIDE_GOOGLEAPIS_URL to point at the
googleapis distfile instead of copying it into the build tree.
- Add patches to use opentelemetry::nostd for opentelemetry-cpp
types; upstream assumes opentelemetry-cpp is built with WITH_STL,
which our devel/opentelemetry-cpp is not.
Changes: https://github.com/googleapis/google-cloud-cpp/blob/v3.13.0/CHANGELOG.md
[SandboxVec][LoadStoreVec] Add Reinterpret::reinterpretValue
Mixed-type load unpacking is the first caller. Insert the ptrtoint /
bitcast / inttoptr chain before the unpack point, and return nullptr
when a non-integral pointer is involved.
[SandboxVec][LoadStoreVec] Support mixed-type load vectorization
Remove the restriction that every load in a top-level load chain must
have the vector's element type. A chain of mixed types such as
{i32, float} or {double, i32, i32} is loaded as a vector of integers
(as chosen by VecUtils::getCombinedVectorTypeFor()), each original load
is unpacked from the lanes it occupies, and then reinterpreted back to
its own type with Reinterpret::reinterpretValue().
Chains involving a non-integral pointer are left alone, since such a
pointer cannot be recovered from an integer lane.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[SandboxVec][LoadStoreVec] Split Reinterpret legality from cast-chain building
canReinterpret() only checks for non-integral pointers, and getCastChain()
builds the ptrtoint/bitcast/inttoptr sequence under that precondition.
The chain is at most three casts, so assert that. Drop the unused runtime
reinterpretValue(); mixed-type loads will add it with tests.
Co-authored-by: Cursor <cursoragent at cursor.com>