https://github.com/addmisol updated 
https://github.com/llvm/llvm-project/pull/217341

>From e1c96a3cc3e5527c02d63419290c0f7da5732d8e Mon Sep 17 00:00:00 2001
From: addmisol <[email protected]>
Date: Wed, 19 Aug 2026 19:01:57 +0530
Subject: [PATCH 1/5] [Clang][Sema] Promote pointers to common address space in
 pointer subtraction

Signed-off-by: addmisol <[email protected]>
---
 clang/lib/Sema/SemaExpr.cpp        | 31 +++++++++++++++++++++++++++++-
 clang/test/CodeGenOpenCL/size_t.cl | 11 ++++++-----
 2 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index d06079a43e23a..1cf38a52f5932 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -5765,7 +5765,7 @@ struct EnsureImmediateInvocationInDefaultArgs
     // is not always done in the context of the template instantiator,
     // we run the risk of producing a dependent source location
     // that would never be rebuilt.
-    // This usually happens during overloadĀ resolution, or in contexts
+    // This usually happens during overload resolution, or in contexts
     // where the value of the source location does not matter.
     // However, we should find a better way to deal with source location
     // of function templates.
@@ -11902,6 +11902,35 @@ QualType Sema::CheckSubtractionOperands(ExprResult 
&LHS, ExprResult &RHS,
                                                LHS.get(), RHS.get()))
         return QualType();
 
+      // For pointer subtraction, if the address spaces differ but overlap,
+      // convert both pointers to the composite (superset) address space.
+      // This is needed because pointer subtraction compares addresses, and
+      // addresses in different spaces may have different sizes.
+      LangAS LAddrSpace = lpointee.getAddressSpace();
+      LangAS RAddrSpace = rpointee.getAddressSpace();
+      if (LAddrSpace != RAddrSpace) {
+        Qualifiers LQual = lpointee.getQualifiers();
+        Qualifiers RQual = rpointee.getQualifiers();
+        LangAS ResultAddrSpace;
+        if (LQual.isAddressSpaceSupersetOf(RQual, Context))
+          ResultAddrSpace = LAddrSpace;
+        else
+          ResultAddrSpace = RAddrSpace;
+
+        if (LAddrSpace != ResultAddrSpace) {
+          QualType NewPteTy = Context.getAddrSpaceQualType(
+              lpointee.getUnqualifiedType(), ResultAddrSpace);
+          QualType NewPtrTy = Context.getPointerType(NewPteTy);
+          LHS = ImpCastExprToType(LHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
+        }
+        if (RAddrSpace != ResultAddrSpace) {
+          QualType NewPteTy = Context.getAddrSpaceQualType(
+              rpointee.getUnqualifiedType(), ResultAddrSpace);
+          QualType NewPtrTy = Context.getPointerType(NewPteTy);
+          RHS = ImpCastExprToType(RHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
+        }
+      }
+
       bool LHSIsNullPtr = LHS.get()->IgnoreParenCasts()->isNullPointerConstant(
           Context, Expr::NPC_ValueDependentIsNotNull);
       bool RHSIsNullPtr = RHS.get()->IgnoreParenCasts()->isNullPointerConstant(
diff --git a/clang/test/CodeGenOpenCL/size_t.cl 
b/clang/test/CodeGenOpenCL/size_t.cl
index c6fee33ac6298..7504fd69be5e8 100644
--- a/clang/test/CodeGenOpenCL/size_t.cl
+++ b/clang/test/CodeGenOpenCL/size_t.cl
@@ -117,16 +117,17 @@ ptrdiff_t test_sub_private(private char* x, private char 
*y) {
 }
 
 //SZ32: define{{.*}} i32 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
-//SZ32: ptrtoaddr ptr %{{.*}} to i32
+//SZ32: addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
 //SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
-//SZ64ONLY: ptrtoaddr ptr %{{.*}} to i64
+//SZ64ONLY: addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
 //SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
 //AMDGCN: define{{.*}} i64 @test_sub_mix(ptr addrspace(5) noundef %x, ptr 
noundef %y)
-//AMDGCN: ptrtoaddr ptr addrspace(5) %{{.*}} to i32
+//AMDGCN: addrspacecast ptr addrspace(5) %{{.*}} to ptr
+//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
 //AMDGCN: ptrtoaddr ptr %{{.*}} to i64
-//AMDGCN: zext i32 %{{.*}} to i64
 ptrdiff_t test_sub_mix(private char* x, generic char *y) {
   return x - y;
 }
-

>From ebeb028f552d52e648137a2e2873455be48440ec Mon Sep 17 00:00:00 2001
From: addmisol <[email protected]>
Date: Thu, 20 Aug 2026 17:50:32 +0530
Subject: [PATCH 2/5] Fix issue

Signed-off-by: addmisol <[email protected]>
---
 clang/lib/Sema/SemaExpr.cpp                            | 6 ++++--
 clang/test/CodeGenOpenCL/address-spaces-conversions.cl | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 1cf38a52f5932..1608a285ef33e 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -11921,13 +11921,15 @@ QualType Sema::CheckSubtractionOperands(ExprResult 
&LHS, ExprResult &RHS,
           QualType NewPteTy = Context.getAddrSpaceQualType(
               lpointee.getUnqualifiedType(), ResultAddrSpace);
           QualType NewPtrTy = Context.getPointerType(NewPteTy);
-          LHS = ImpCastExprToType(LHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
+          LHS = ImpCastExprToType(LHS.get(), NewPtrTy,
+                                  CK_AddressSpaceConversion);
         }
         if (RAddrSpace != ResultAddrSpace) {
           QualType NewPteTy = Context.getAddrSpaceQualType(
               rpointee.getUnqualifiedType(), ResultAddrSpace);
           QualType NewPtrTy = Context.getPointerType(NewPteTy);
-          RHS = ImpCastExprToType(RHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
+          RHS = ImpCastExprToType(RHS.get(), NewPtrTy,
+                                  CK_AddressSpaceConversion);
         }
       }
 
diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl 
b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
index 15ad3b8ba48ea..20f7bbfbf451f 100644
--- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
+++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
@@ -30,8 +30,9 @@ void test(global int *arg_glob, generic int *arg_gen,
   // CHECK-NOFAKE-NOT: addrspacecast
 
   var_priv = arg_gen - arg_glob; // arithmetic operation
+  // CHECK: %{{.*}} = addrspacecast ptr addrspace(1) %{{.*}} to ptr 
addrspace(4)
+  // CHECK: %{{.*}} = ptrtoaddr ptr addrspace(4) %{{.*}} to i64
   // CHECK: %{{.*}} = ptrtoaddr ptr addrspace(4) %{{.*}} to i64
-  // CHECK: %{{.*}} = ptrtoaddr ptr addrspace(1) %{{.*}} to i64
   // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
   // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
 

>From 5a5efed240d193ef4d39479a41299cb070f603e8 Mon Sep 17 00:00:00 2001
From: addmisol <[email protected]>
Date: Fri, 21 Aug 2026 21:06:20 +0530
Subject: [PATCH 3/5] fix: Address comments

Signed-off-by: addmisol <[email protected]>
---
 clang/lib/Sema/SemaExpr.cpp                   | 20 +++---
 .../address-spaces-conversions.cl             |  6 +-
 clang/test/CodeGenOpenCL/size_t.cl            | 63 +++++++++++++++++--
 3 files changed, 69 insertions(+), 20 deletions(-)

diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 89fcdc6fc49d6..e8db231740a6a 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -11904,32 +11904,30 @@ QualType Sema::CheckSubtractionOperands(ExprResult 
&LHS, ExprResult &RHS,
 
       // For pointer subtraction, if the address spaces differ but overlap,
       // convert both pointers to the composite (superset) address space.
-      // This is needed because pointer subtraction compares addresses, and
-      // addresses in different spaces may have different sizes.
+      // This is needed because address spaces may use different
+      // representations, such as a private offset vs a flat address.
       LangAS LAddrSpace = lpointee.getAddressSpace();
       LangAS RAddrSpace = rpointee.getAddressSpace();
       if (LAddrSpace != RAddrSpace) {
         Qualifiers LQual = lpointee.getQualifiers();
         Qualifiers RQual = rpointee.getQualifiers();
-        LangAS ResultAddrSpace;
-        if (LQual.isAddressSpaceSupersetOf(RQual, Context))
-          ResultAddrSpace = LAddrSpace;
-        else
-          ResultAddrSpace = RAddrSpace;
+        LangAS ResultAddrSpace = LQual.isAddressSpaceSupersetOf(RQual, Context)
+                                     ? LAddrSpace
+                                     : RAddrSpace;
 
         if (LAddrSpace != ResultAddrSpace) {
           QualType NewPteTy = Context.getAddrSpaceQualType(
               lpointee.getUnqualifiedType(), ResultAddrSpace);
           QualType NewPtrTy = Context.getPointerType(NewPteTy);
-          LHS = ImpCastExprToType(LHS.get(), NewPtrTy,
-                                  CK_AddressSpaceConversion);
+          LHS =
+              ImpCastExprToType(LHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
         }
         if (RAddrSpace != ResultAddrSpace) {
           QualType NewPteTy = Context.getAddrSpaceQualType(
               rpointee.getUnqualifiedType(), ResultAddrSpace);
           QualType NewPtrTy = Context.getPointerType(NewPteTy);
-          RHS = ImpCastExprToType(RHS.get(), NewPtrTy,
-                                  CK_AddressSpaceConversion);
+          RHS =
+              ImpCastExprToType(RHS.get(), NewPtrTy, 
CK_AddressSpaceConversion);
         }
       }
 
diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl 
b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
index 20f7bbfbf451f..04d38a62f4f65 100644
--- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
+++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
@@ -30,9 +30,9 @@ void test(global int *arg_glob, generic int *arg_gen,
   // CHECK-NOFAKE-NOT: addrspacecast
 
   var_priv = arg_gen - arg_glob; // arithmetic operation
-  // CHECK: %{{.*}} = addrspacecast ptr addrspace(1) %{{.*}} to ptr 
addrspace(4)
-  // CHECK: %{{.*}} = ptrtoaddr ptr addrspace(4) %{{.*}} to i64
-  // CHECK: %{{.*}} = ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+  // CHECK: [[SUBCAST:%.*]] = addrspacecast ptr addrspace(1) %{{.*}} to ptr 
addrspace(4)
+  // CHECK: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+  // CHECK: ptrtoaddr ptr addrspace(4) [[SUBCAST]] to i64
   // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
   // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
 
diff --git a/clang/test/CodeGenOpenCL/size_t.cl 
b/clang/test/CodeGenOpenCL/size_t.cl
index 7504fd69be5e8..2fbef1b81daa4 100644
--- a/clang/test/CodeGenOpenCL/size_t.cl
+++ b/clang/test/CodeGenOpenCL/size_t.cl
@@ -117,17 +117,68 @@ ptrdiff_t test_sub_private(private char* x, private char 
*y) {
 }
 
 //SZ32: define{{.*}} i32 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
-//SZ32: addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ32: [[CAST1:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ32: ptrtoaddr ptr addrspace(4) [[CAST1]] to i32
 //SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
-//SZ64ONLY: addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: [[CAST2:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CAST2]] to i64
 //SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
 //AMDGCN: define{{.*}} i64 @test_sub_mix(ptr addrspace(5) noundef %x, ptr 
noundef %y)
-//AMDGCN: addrspacecast ptr addrspace(5) %{{.*}} to ptr
-//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+//AMDGCN: [[CAST3:%.*]] = addrspacecast ptr addrspace(5) %{{.*}} to ptr
+//AMDGCN: ptrtoaddr ptr [[CAST3]] to i64
 //AMDGCN: ptrtoaddr ptr %{{.*}} to i64
 ptrdiff_t test_sub_mix(private char* x, generic char *y) {
   return x - y;
 }
+
+// Test commuted case: generic - private
+//SZ32: define{{.*}} i32 @test_sub_mix_commute(ptr addrspace(4) noundef %x, 
ptr noundef %y)
+//SZ32: [[CASTC1:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoaddr ptr addrspace(4) [[CASTC1]] to i32
+//SZ64ONLY: define{{.*}} i64 @test_sub_mix_commute(ptr addrspace(4) noundef 
%x, ptr noundef %y)
+//SZ64ONLY: [[CASTC2:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTC2]] to i64
+//AMDGCN: define{{.*}} i64 @test_sub_mix_commute(ptr noundef %x, ptr 
addrspace(5) noundef %y)
+//AMDGCN: [[CASTC3:%.*]] = addrspacecast ptr addrspace(5) %{{.*}} to ptr
+//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+//AMDGCN: ptrtoaddr ptr [[CASTC3]] to i64
+ptrdiff_t test_sub_mix_commute(generic char* x, private char *y) {
+  return x - y;
+}
+
+// Test local - generic subtraction
+//SZ32: define{{.*}} i32 @test_sub_local_generic(ptr addrspace(3) noundef %x, 
ptr addrspace(4) noundef %y)
+//SZ32: [[CASTLG1:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
+//SZ32: ptrtoaddr ptr addrspace(4) [[CASTLG1]] to i32
+//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ64ONLY: define{{.*}} i64 @test_sub_local_generic(ptr addrspace(3) noundef 
%x, ptr addrspace(4) noundef %y)
+//SZ64ONLY: [[CASTLG2:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTLG2]] to i64
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//AMDGCN: define{{.*}} i64 @test_sub_local_generic(ptr addrspace(3) noundef 
%x, ptr noundef %y)
+//AMDGCN: [[CASTLG3:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr
+//AMDGCN: ptrtoaddr ptr [[CASTLG3]] to i64
+//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+ptrdiff_t test_sub_local_generic(local char* x, generic char *y) {
+  return x - y;
+}
+
+// Test generic - local subtraction (commuted)
+//SZ32: define{{.*}} i32 @test_sub_generic_local(ptr addrspace(4) noundef %x, 
ptr addrspace(3) noundef %y)
+//SZ32: [[CASTGL1:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
+//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoaddr ptr addrspace(4) [[CASTGL1]] to i32
+//SZ64ONLY: define{{.*}} i64 @test_sub_generic_local(ptr addrspace(4) noundef 
%x, ptr addrspace(3) noundef %y)
+//SZ64ONLY: [[CASTGL2:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTGL2]] to i64
+//AMDGCN: define{{.*}} i64 @test_sub_generic_local(ptr noundef %x, ptr 
addrspace(3) noundef %y)
+//AMDGCN: [[CASTGL3:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr
+//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+//AMDGCN: ptrtoaddr ptr [[CASTGL3]] to i64
+ptrdiff_t test_sub_generic_local(generic char* x, local char *y) {
+  return x - y;
+}

>From 5632314393a541cfbeb311e53aed7f66de0b0490 Mon Sep 17 00:00:00 2001
From: Addmisol <[email protected]>
Date: Fri, 21 Aug 2026 21:10:30 +0530
Subject: [PATCH 4/5] fix: Remove unnecessary change

---
 clang/lib/Sema/SemaExpr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index e8db231740a6a..a74ab9b04af56 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -5765,7 +5765,7 @@ struct EnsureImmediateInvocationInDefaultArgs
     // is not always done in the context of the template instantiator,
     // we run the risk of producing a dependent source location
     // that would never be rebuilt.
-    // This usually happens during overload resolution, or in contexts
+    // This usually happens during overloadĀ resolution, or in contexts
     // where the value of the source location does not matter.
     // However, we should find a better way to deal with source location
     // of function templates.

>From 5a897f81e0c8b6b160dd2f79073582f4a72f176e Mon Sep 17 00:00:00 2001
From: addmisol <[email protected]>
Date: Sat, 29 Aug 2026 14:40:39 +0530
Subject: [PATCH 5/5] Fix issues and tests

Signed-off-by: addmisol <[email protected]>
---
 .../address-spaces-conversions.cl             |  8 ++--
 clang/test/CodeGenOpenCL/size_t.cl            | 48 +++++++++----------
 2 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl 
b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
index 04d38a62f4f65..095df3c7fb2fd 100644
--- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
+++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
@@ -31,10 +31,10 @@ void test(global int *arg_glob, generic int *arg_gen,
 
   var_priv = arg_gen - arg_glob; // arithmetic operation
   // CHECK: [[SUBCAST:%.*]] = addrspacecast ptr addrspace(1) %{{.*}} to ptr 
addrspace(4)
-  // CHECK: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
-  // CHECK: ptrtoaddr ptr addrspace(4) [[SUBCAST]] to i64
-  // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
-  // CHECK-NOFAKE: %{{.*}} = ptrtoaddr ptr %{{.*}} to i64
+  // CHECK: ptrtoint ptr addrspace(4) %{{.*}} to i64
+  // CHECK: ptrtoint ptr addrspace(4) [[SUBCAST]] to i64
+  // CHECK-NOFAKE: %{{.*}} = ptrtoint ptr %{{.*}} to i64
+  // CHECK-NOFAKE: %{{.*}} = ptrtoint ptr %{{.*}} to i64
 
   var_priv = arg_gen > arg_glob; // comparison
   // CHECK: %{{[0-9]+}} = addrspacecast ptr addrspace(1) %{{[0-9]+}} to ptr 
addrspace(4)
diff --git a/clang/test/CodeGenOpenCL/size_t.cl 
b/clang/test/CodeGenOpenCL/size_t.cl
index 4a217e531f192..cd2e93b7ea328 100644
--- a/clang/test/CodeGenOpenCL/size_t.cl
+++ b/clang/test/CodeGenOpenCL/size_t.cl
@@ -111,16 +111,16 @@ ptrdiff_t test_sub_private(private char* x, private char 
*y) {
 
 //SZ32: define{{.*}} i32 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
 //SZ32: [[CAST1:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ32: ptrtoaddr ptr addrspace(4) [[CAST1]] to i32
-//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoint ptr addrspace(4) [[CAST1]] to i32
+//SZ32: ptrtoint ptr addrspace(4) %{{.*}} to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_mix(ptr noundef %x, ptr addrspace(4) 
noundef %y)
 //SZ64ONLY: [[CAST2:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CAST2]] to i64
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) [[CAST2]] to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) %{{.*}} to i64
 //AMDGCN: define{{.*}} i64 @test_sub_mix(ptr addrspace(5) noundef %x, ptr 
noundef %y)
 //AMDGCN: [[CAST3:%.*]] = addrspacecast ptr addrspace(5) %{{.*}} to ptr
-//AMDGCN: ptrtoaddr ptr [[CAST3]] to i64
-//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+//AMDGCN: ptrtoint ptr [[CAST3]] to i64
+//AMDGCN: ptrtoint ptr %{{.*}} to i64
 ptrdiff_t test_sub_mix(private char* x, generic char *y) {
   return x - y;
 }
@@ -128,16 +128,16 @@ ptrdiff_t test_sub_mix(private char* x, generic char *y) {
 // Test commuted case: generic - private
 //SZ32: define{{.*}} i32 @test_sub_mix_commute(ptr addrspace(4) noundef %x, 
ptr noundef %y)
 //SZ32: [[CASTC1:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
-//SZ32: ptrtoaddr ptr addrspace(4) [[CASTC1]] to i32
+//SZ32: ptrtoint ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoint ptr addrspace(4) [[CASTC1]] to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_mix_commute(ptr addrspace(4) noundef 
%x, ptr noundef %y)
 //SZ64ONLY: [[CASTC2:%.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(4)
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTC2]] to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) [[CASTC2]] to i64
 //AMDGCN: define{{.*}} i64 @test_sub_mix_commute(ptr noundef %x, ptr 
addrspace(5) noundef %y)
 //AMDGCN: [[CASTC3:%.*]] = addrspacecast ptr addrspace(5) %{{.*}} to ptr
-//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
-//AMDGCN: ptrtoaddr ptr [[CASTC3]] to i64
+//AMDGCN: ptrtoint ptr %{{.*}} to i64
+//AMDGCN: ptrtoint ptr [[CASTC3]] to i64
 ptrdiff_t test_sub_mix_commute(generic char* x, private char *y) {
   return x - y;
 }
@@ -145,16 +145,16 @@ ptrdiff_t test_sub_mix_commute(generic char* x, private 
char *y) {
 // Test local - generic subtraction
 //SZ32: define{{.*}} i32 @test_sub_local_generic(ptr addrspace(3) noundef %x, 
ptr addrspace(4) noundef %y)
 //SZ32: [[CASTLG1:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
-//SZ32: ptrtoaddr ptr addrspace(4) [[CASTLG1]] to i32
-//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoint ptr addrspace(4) [[CASTLG1]] to i32
+//SZ32: ptrtoint ptr addrspace(4) %{{.*}} to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_local_generic(ptr addrspace(3) noundef 
%x, ptr addrspace(4) noundef %y)
 //SZ64ONLY: [[CASTLG2:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTLG2]] to i64
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) [[CASTLG2]] to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) %{{.*}} to i64
 //AMDGCN: define{{.*}} i64 @test_sub_local_generic(ptr addrspace(3) noundef 
%x, ptr noundef %y)
 //AMDGCN: [[CASTLG3:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr
-//AMDGCN: ptrtoaddr ptr [[CASTLG3]] to i64
-//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
+//AMDGCN: ptrtoint ptr [[CASTLG3]] to i64
+//AMDGCN: ptrtoint ptr %{{.*}} to i64
 ptrdiff_t test_sub_local_generic(local char* x, generic char *y) {
   return x - y;
 }
@@ -162,16 +162,16 @@ ptrdiff_t test_sub_local_generic(local char* x, generic 
char *y) {
 // Test generic - local subtraction (commuted)
 //SZ32: define{{.*}} i32 @test_sub_generic_local(ptr addrspace(4) noundef %x, 
ptr addrspace(3) noundef %y)
 //SZ32: [[CASTGL1:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
-//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32
-//SZ32: ptrtoaddr ptr addrspace(4) [[CASTGL1]] to i32
+//SZ32: ptrtoint ptr addrspace(4) %{{.*}} to i32
+//SZ32: ptrtoint ptr addrspace(4) [[CASTGL1]] to i32
 //SZ64ONLY: define{{.*}} i64 @test_sub_generic_local(ptr addrspace(4) noundef 
%x, ptr addrspace(3) noundef %y)
 //SZ64ONLY: [[CASTGL2:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr 
addrspace(4)
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) %{{.*}} to i64
-//SZ64ONLY: ptrtoaddr ptr addrspace(4) [[CASTGL2]] to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) %{{.*}} to i64
+//SZ64ONLY: ptrtoint ptr addrspace(4) [[CASTGL2]] to i64
 //AMDGCN: define{{.*}} i64 @test_sub_generic_local(ptr noundef %x, ptr 
addrspace(3) noundef %y)
 //AMDGCN: [[CASTGL3:%.*]] = addrspacecast ptr addrspace(3) %{{.*}} to ptr
-//AMDGCN: ptrtoaddr ptr %{{.*}} to i64
-//AMDGCN: ptrtoaddr ptr [[CASTGL3]] to i64
+//AMDGCN: ptrtoint ptr %{{.*}} to i64
+//AMDGCN: ptrtoint ptr [[CASTGL3]] to i64
 ptrdiff_t test_sub_generic_local(generic char* x, local char *y) {
   return x - y;
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to