[all-commits] [llvm/llvm-project] 4e12d4: [Clang][Sema] Promote pointers to common address s...

Addmisol via All-commits all-commits at lists.llvm.org
Tue Sep 8 15:08:36 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4e12d4bc6b5fc33f0e556f8f282cf97d2843c39b
      https://github.com/llvm/llvm-project/commit/4e12d4bc6b5fc33f0e556f8f282cf97d2843c39b
  Author: Addmisol <addmisol9 at gmail.com>
  Date:   2026-09-08 (Tue, 08 Sep 2026)

  Changed paths:
    M clang/lib/Sema/SemaExpr.cpp
    M clang/test/CodeGenOpenCL/address-spaces-conversions.cl
    M clang/test/CodeGenOpenCL/size_t.cl

  Log Message:
  -----------
  [Clang][Sema] Promote pointers to common address space in pointer subtraction (#217341)

fixes #216804 

## Summary

This PR fixes pointer subtraction between pointers with different but
overlapping address spaces (e.g., `private` and `generic` in
  OpenCL).

Previously, when subtracting a private pointer from a generic pointer on
AMDGPU:
- The private pointer (AS5, 32-bit) was converted directly to i32 via
`ptrtoaddr`
- The generic pointer (AS0, 64-bit) was converted to i64 via `ptrtoaddr`
  - This resulted in incorrect comparison of 32-bit vs 64-bit values

Now, pointers are first promoted to the composite (superset) address
space using `addrspacecast` before the subtraction. This
mirrors how the conditional operator (`?:`) already handles mixed
address space pointers.

  ## Test plan

  - `clang/test/CodeGenOpenCL/size_t.cl` updated and passes
- Verified generated IR shows correct `addrspacecast` before `ptrtoaddr`
for AMDGCN and SPIR targets

---------

Signed-off-by: addmisol <addmisol9 at gmail.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list