llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-codegen Author: Nico Weber (nico) <details> <summary>Changes</summary> This reverts commit d7594bf4caa568e843e961205631adba44b8ab87. Seems to cause miscompiles, see comments on the PR starting here: https://github.com/llvm/llvm-project/pull/210729#issuecomment-5427641352 --- Patch is 433.61 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/219203.diff 17 Files Affected: - (modified) clang/lib/CodeGen/CGExprScalar.cpp (+5-15) - (modified) clang/test/CodeGen/glibc_ptr_align.c (+7-7) - (modified) clang/test/CodeGen/ptr-subtract-stable.c (+7-21) - (modified) clang/test/CodeGen/vla.c (+2-2) - (modified) clang/test/CodeGenCUDA/managed-var.cu (+2-2) - (modified) clang/test/CodeGenOpenCL/address-spaces-conversions.cl (+4-4) - (modified) clang/test/CodeGenOpenCL/nullptr.cl (+2-2) - (modified) clang/test/CodeGenOpenCL/size_t.cl (+17-25) - (modified) clang/test/OpenMP/depobj_codegen.cpp (+4-4) - (modified) clang/test/OpenMP/for_range_loop_codegen.cpp (+10-10) - (modified) clang/test/OpenMP/fuse_codegen.cpp (+78-82) - (modified) clang/test/OpenMP/interchange_codegen.cpp (+57-58) - (modified) clang/test/OpenMP/parallel_for_codegen.cpp (+1049-1049) - (modified) clang/test/OpenMP/reverse_codegen.cpp (+36-36) - (modified) clang/test/OpenMP/split_codegen.cpp (+4-4) - (modified) clang/test/OpenMP/stripe_codegen.cpp (+118-124) - (modified) clang/test/OpenMP/tile_codegen.cpp (+118-124) ``````````diff diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index 173931213ce68..3b0f6ae9e14bb 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -4982,21 +4982,11 @@ Value *ScalarExprEmitter::EmitSub(const BinOpInfo &op) { // Otherwise, this is a pointer subtraction. - // Do the raw subtraction part. When pointer overflow is defined, use ptrtoint - // as the pointer difference can be used to obtain the pointer without basing - // it on one of the pointers (e.g. via -(nullptr - ptr)). - Value *LHS, *RHS; - if (CGF.getLangOpts().PointerOverflowDefined) { - LHS = Builder.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, "sub.ptr.lhs.cast"); - RHS = Builder.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, "sub.ptr.rhs.cast"); - } else { - LHS = Builder.CreatePtrToAddr(op.LHS, "sub.ptr.lhs.cast"); - RHS = Builder.CreatePtrToAddr(op.RHS, "sub.ptr.rhs.cast"); - if (LHS->getType() != CGF.PtrDiffTy) - LHS = Builder.CreateZExtOrTrunc(LHS, CGF.PtrDiffTy, "sub.ptr.lhs.ext"); - if (RHS->getType() != CGF.PtrDiffTy) - RHS = Builder.CreateZExtOrTrunc(RHS, CGF.PtrDiffTy, "sub.ptr.lhs.ext"); - } + // Do the raw subtraction part. + llvm::Value *LHS + = Builder.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, "sub.ptr.lhs.cast"); + llvm::Value *RHS + = Builder.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, "sub.ptr.rhs.cast"); Value *diffInChars = Builder.CreateSub(LHS, RHS, "sub.ptr.sub"); // Okay, figure out the element size. diff --git a/clang/test/CodeGen/glibc_ptr_align.c b/clang/test/CodeGen/glibc_ptr_align.c index 05b10f610376a..e5296afc4519b 100644 --- a/clang/test/CodeGen/glibc_ptr_align.c +++ b/clang/test/CodeGen/glibc_ptr_align.c @@ -4,9 +4,9 @@ // Make sure that we do not set inbounds flag if the base pointer may be a constant null. // CHECK-LABEL: define dso_local ptr @glibc_ptr_align( -// CHECK-SAME: ptr nofree noundef readnone captures(none) [[BASE:%.*]], ptr nofree noundef readnone captures(address) [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { +// CHECK-SAME: ptr nofree noundef readnone captures(none) [[BASE:%.*]], ptr noundef [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { // CHECK-NEXT: [[ENTRY:.*:]] -// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoaddr ptr [[POINTER]] to i64 +// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoint ptr [[POINTER]] to i64 // CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[ALIGN_MASK]], [[SUB_PTR_LHS_CAST]] // CHECK-NEXT: [[NOT:%.*]] = xor i64 [[ALIGN_MASK]], -1 // CHECK-NEXT: [[AND:%.*]] = and i64 [[ADD]], [[NOT]] @@ -22,9 +22,9 @@ char *glibc_ptr_align(char *base, char *pointer, long align_mask) { } // CHECK-LABEL: define dso_local ptr @glibc_ptr_align_commuted( -// CHECK-SAME: ptr nofree noundef readnone captures(none) [[BASE:%.*]], ptr nofree noundef readnone captures(address) [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]]) local_unnamed_addr #[[ATTR0]] { +// CHECK-SAME: ptr nofree noundef readnone captures(none) [[BASE:%.*]], ptr noundef [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]]) local_unnamed_addr #[[ATTR0]] { // CHECK-NEXT: [[ENTRY:.*:]] -// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoaddr ptr [[POINTER]] to i64 +// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoint ptr [[POINTER]] to i64 // CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[ALIGN_MASK]], [[SUB_PTR_LHS_CAST]] // CHECK-NEXT: [[NOT:%.*]] = xor i64 [[ALIGN_MASK]], -1 // CHECK-NEXT: [[AND:%.*]] = and i64 [[ADD]], [[NOT]] @@ -40,12 +40,12 @@ char *glibc_ptr_align_commuted(char *base, char *pointer, long align_mask) { } // CHECK-LABEL: define dso_local ptr @glibc_ptr_align_non_constexpr( -// CHECK-SAME: ptr nofree noundef readnone captures(address, ret: address, provenance) [[BASE:%.*]], ptr nofree noundef readnone captures(address) [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]], i32 noundef [[COND:%.*]]) local_unnamed_addr #[[ATTR0]] { +// CHECK-SAME: ptr noundef [[BASE:%.*]], ptr noundef [[POINTER:%.*]], i64 noundef [[ALIGN_MASK:%.*]], i32 noundef [[COND:%.*]]) local_unnamed_addr #[[ATTR0]] { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[COND]], 0 // CHECK-NEXT: [[COND1:%.*]] = select i1 [[TOBOOL_NOT]], ptr null, ptr [[BASE]] -// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoaddr ptr [[POINTER]] to i64 -// CHECK-NEXT: [[SUB_PTR_RHS_CAST:%.*]] = ptrtoaddr ptr [[COND1]] to i64 +// CHECK-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoint ptr [[POINTER]] to i64 +// CHECK-NEXT: [[SUB_PTR_RHS_CAST:%.*]] = ptrtoint ptr [[COND1]] to i64 // CHECK-NEXT: [[SUB_PTR_SUB:%.*]] = add i64 [[ALIGN_MASK]], [[SUB_PTR_LHS_CAST]] // CHECK-NEXT: [[ADD:%.*]] = sub i64 [[SUB_PTR_SUB]], [[SUB_PTR_RHS_CAST]] // CHECK-NEXT: [[NOT:%.*]] = xor i64 [[ALIGN_MASK]], -1 diff --git a/clang/test/CodeGen/ptr-subtract-stable.c b/clang/test/CodeGen/ptr-subtract-stable.c index f3579e9b61d37..0782b987c7fec 100644 --- a/clang/test/CodeGen/ptr-subtract-stable.c +++ b/clang/test/CodeGen/ptr-subtract-stable.c @@ -1,27 +1,13 @@ -// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6 -// RUN: %clang -S -emit-llvm -O2 --target=x86_64-windows-msvc -fdefined-pointer-subtraction -fno-discard-value-names -fms-extensions %s -o - | FileCheck %s --check-prefix=DPS -// RUN: %clang -S -emit-llvm -O2 --target=x86_64-windows-msvc -fwrapv-pointer -fno-discard-value-names -fms-extensions %s -o - | FileCheck %s --check-prefix=WRAPV +// RUN: %clang -S -emit-llvm -O2 --target=x86_64-windows-msvc -fdefined-pointer-subtraction -fno-discard-value-names -fms-extensions %s -o - | FileCheck %s // Check that pointer subtraction isn't nuw/nsv and sdiv isn't exact +// CHECK: i64 @sub(ptr noundef %[[P:.*]], ptr noundef %[[Q:.*]]) +// CHECK-NEXT: entry: +// CHECK-NEXT: %[[PI:.*]] = ptrtoint ptr %[[P]] to i64 +// CHECK-NEXT: %[[QI:.*]] = ptrtoint ptr %[[Q]] to i64 +// CHECK-NEXT: %[[SB:.*]] = sub i64 %[[PI]], %[[QI]] +// CHECK-NEXT: {{.*}} = sdiv i64 %[[SB]], 4 -// DPS-LABEL: define dso_local noundef range(i64 -2305843009213693952, 2305843009213693952) i64 @sub( -// DPS-SAME: ptr nofree noundef readnone captures(address) [[P:%.*]], ptr nofree noundef readnone captures(address) [[Q:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { -// DPS-NEXT: [[ENTRY:.*:]] -// DPS-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoaddr ptr [[P]] to i64 -// DPS-NEXT: [[SUB_PTR_RHS_CAST:%.*]] = ptrtoaddr ptr [[Q]] to i64 -// DPS-NEXT: [[SUB_PTR_SUB:%.*]] = sub i64 [[SUB_PTR_LHS_CAST]], [[SUB_PTR_RHS_CAST]] -// DPS-NEXT: [[SUB_PTR_DIV:%.*]] = sdiv i64 [[SUB_PTR_SUB]], 4 -// DPS-NEXT: ret i64 [[SUB_PTR_DIV]] -// -// WRAPV-LABEL: define dso_local range(i64 -2305843009213693952, 2305843009213693952) i64 @sub( -// WRAPV-SAME: ptr noundef [[P:%.*]], ptr noundef [[Q:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { -// WRAPV-NEXT: [[ENTRY:.*:]] -// WRAPV-NEXT: [[SUB_PTR_LHS_CAST:%.*]] = ptrtoint ptr [[P]] to i64 -// WRAPV-NEXT: [[SUB_PTR_RHS_CAST:%.*]] = ptrtoint ptr [[Q]] to i64 -// WRAPV-NEXT: [[SUB_PTR_SUB:%.*]] = sub i64 [[SUB_PTR_LHS_CAST]], [[SUB_PTR_RHS_CAST]] -// WRAPV-NEXT: [[SUB_PTR_DIV:%.*]] = ashr exact i64 [[SUB_PTR_SUB]], 2 -// WRAPV-NEXT: ret i64 [[SUB_PTR_DIV]] -// __declspec(noinline) long long sub(long* p, long* q) { return p - q; } diff --git a/clang/test/CodeGen/vla.c b/clang/test/CodeGen/vla.c index 8ce3da86f43d7..18aa744b5f6fe 100644 --- a/clang/test/CodeGen/vla.c +++ b/clang/test/CodeGen/vla.c @@ -132,8 +132,8 @@ int test4(unsigned n, char (*p)[n][n+1][6]) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[P2]], align 4 // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr [[P]], align 4 - // CHECK-NEXT: [[T2:%.*]] = ptrtoaddr ptr [[T0]] to i32 - // CHECK-NEXT: [[T3:%.*]] = ptrtoaddr ptr [[T1]] to i32 + // CHECK-NEXT: [[T2:%.*]] = ptrtoint ptr [[T0]] to i32 + // CHECK-NEXT: [[T3:%.*]] = ptrtoint ptr [[T1]] to i32 // CHECK-NEXT: [[T4:%.*]] = sub i32 [[T2]], [[T3]] // CHECK-NEXT: [[T5:%.*]] = mul nuw i32 [[DIM0]], [[DIM1]] // CHECK-NEXT: [[T6:%.*]] = mul nuw i32 6, [[T5]] diff --git a/clang/test/CodeGenCUDA/managed-var.cu b/clang/test/CodeGenCUDA/managed-var.cu index 5a087cc01699b..fca64ea692ca3 100644 --- a/clang/test/CodeGenCUDA/managed-var.cu +++ b/clang/test/CodeGenCUDA/managed-var.cu @@ -137,10 +137,10 @@ float load3() { // HOST-LABEL: define {{.*}}@_Z11addr_taken2v() // HOST: %ld.managed = load ptr, ptr @v, align 16 // HOST: %0 = getelementptr inbounds nuw i8, ptr %ld.managed, i64 12 -// HOST: %1 = ptrtoaddr ptr %0 to i64 +// HOST: %1 = ptrtoint ptr %0 to i64 // HOST: %ld.managed1 = load ptr, ptr @v2, align 16 // HOST: %2 = getelementptr inbounds nuw i8, ptr %ld.managed1, i64 16 -// HOST: %3 = ptrtoaddr ptr %2 to i64 +// HOST: %3 = ptrtoint ptr %2 to i64 // HOST: %4 = sub i64 %3, %1 // HOST: %sub.ptr.div = sdiv exact i64 %4, 4 // HOST: %conv = sitofp contract i64 %sub.ptr.div to float diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl index 15ad3b8ba48ea..af0c40e1417b2 100644 --- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl +++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl @@ -30,10 +30,10 @@ void test(global int *arg_glob, generic int *arg_gen, // CHECK-NOFAKE-NOT: addrspacecast var_priv = arg_gen - arg_glob; // arithmetic operation - // 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 + // CHECK: %{{.*}} = ptrtoint ptr addrspace(4) %{{.*}} to i64 + // CHECK: %{{.*}} = ptrtoint ptr addrspace(1) %{{.*}} 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/nullptr.cl b/clang/test/CodeGenOpenCL/nullptr.cl index dc9450f858ae0..9fb2e9eb2b725 100644 --- a/clang/test/CodeGenOpenCL/nullptr.cl +++ b/clang/test/CodeGenOpenCL/nullptr.cl @@ -700,7 +700,7 @@ int test_and_ptr(private char* p1, local char* p2) { // CHECK-NOOPT-LABEL: test_fold_private // SPIR64-NOOPT: call{{.*}} void @test_fold_callee // SPIR64-NOOPT: store ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)), ptr %glob{{.*}}, align 8 -// SPIR64-NOOPT: %{{.*}} = sub i64 %{{.*}}, ptrtoaddr (ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)) to i64) +// SPIR64-NOOPT: %{{.*}} = sub i64 %{{.*}}, ptrtoint (ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)) to i64) // AMDGCN-NOOPT: store ptr addrspace(1) null, ptr addrspace(5) %glob{{.*}}, align 8 // AMDGCN-NOOPT: %{{.*}} = sub i64 %{{.*}}, 0 // SPIR64-NOOPT: call{{.*}} void @test_fold_callee @@ -719,7 +719,7 @@ void test_fold_private(void) { // CHECK-NOOPT-LABEL: test_fold_local // CHECK-NOOPT: call{{.*}} void @test_fold_callee // SPIR64-NOOPT: store ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)), ptr %glob{{.*}}, align 8 -// SPIR64-NOOPT: %{{.*}} = sub i64 %{{.*}}, ptrtoaddr (ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)) to i64) +// SPIR64-NOOPT: %{{.*}} = sub i64 %{{.*}}, ptrtoint (ptr addrspace(1) addrspacecast (ptr addrspace(4) null to ptr addrspace(1)) to i64) // AMDGCN-NOOPT: store ptr addrspace(1) null, ptr addrspace(5) %glob{{.*}}, align 8 // AMDGCN-NOOPT: %{{.*}} = sub i64 %{{.*}}, 0 // CHECK-NOOPT: call{{.*}} void @test_fold_callee diff --git a/clang/test/CodeGenOpenCL/size_t.cl b/clang/test/CodeGenOpenCL/size_t.cl index c6fee33ac6298..93a3d3d21ff63 100644 --- a/clang/test/CodeGenOpenCL/size_t.cl +++ b/clang/test/CodeGenOpenCL/size_t.cl @@ -87,45 +87,37 @@ global char* test_add_global(global char* x, ptrdiff_t y) { } //SZ32: define{{.*}} i32 @test_sub_local(ptr addrspace(3) noundef %x, ptr addrspace(3) noundef %y) -//SZ32: ptrtoaddr ptr addrspace(3) %{{.*}} to i32 -//SZ32: ptrtoaddr ptr addrspace(3) %{{.*}} to i32 -//SZ64ONLY: define{{.*}} i64 @test_sub_local(ptr addrspace(3) noundef %x, ptr addrspace(3) noundef %y) -//SZ64ONLY: ptrtoaddr ptr addrspace(3) %{{.*}} to i64 -//SZ64ONLY: ptrtoaddr ptr addrspace(3) %{{.*}} to i64 -//AMDGCN: define{{.*}} i64 @test_sub_local(ptr addrspace(3) noundef %x, ptr addrspace(3) noundef %y) -//AMDGCN: ptrtoaddr ptr addrspace(3) %{{.*}} to i32 -//AMDGCN: ptrtoaddr ptr addrspace(3) %{{.*}} to i32 -//AMDGCN: zext i32 %{{.*}} to i64 -//AMDGCN: zext i32 %{{.*}} to i64 +//SZ32: ptrtoint ptr addrspace(3) %{{.*}} to i32 +//SZ32: ptrtoint ptr addrspace(3) %{{.*}} to i32 +//SZ64: define{{.*}} i64 @test_sub_local(ptr addrspace(3) noundef %x, ptr addrspace(3) noundef %y) +//SZ64: ptrtoint ptr addrspace(3) %{{.*}} to i64 +//SZ64: ptrtoint ptr addrspace(3) %{{.*}} to i64 ptrdiff_t test_sub_local(local char* x, local char *y) { return x - y; } //SZ32: define{{.*}} i32 @test_sub_private(ptr noundef %x, ptr noundef %y) -//SZ32: ptrtoaddr ptr %{{.*}} to i32 -//SZ32: ptrtoaddr ptr %{{.*}} to i32 +//SZ32: ptrtoint ptr %{{.*}} to i32 +//SZ32: ptrtoint ptr %{{.*}} to i32 //SZ64ONLY: define{{.*}} i64 @test_sub_private(ptr noundef %x, ptr noundef %y) -//SZ64ONLY: ptrtoaddr ptr %{{.*}} to i64 -//SZ64ONLY: ptrtoaddr ptr %{{.*}} to i64 +//SZ64ONLY: ptrtoint ptr %{{.*}} to i64 +//SZ64ONLY: ptrtoint ptr %{{.*}} to i64 //AMDGCN: define{{.*}} i64 @test_sub_private(ptr addrspace(5) noundef %x, ptr addrspace(5) noundef %y) -//AMDGCN: ptrtoaddr ptr addrspace(5) %{{.*}} to i32 -//AMDGCN: ptrtoaddr ptr addrspace(5) %{{.*}} to i32 -//AMDGCN: zext i32 %{{.*}} to i64 -//AMDGCN: zext i32 %{{.*}} to i64 +//AMDGCN: ptrtoint ptr addrspace(5) %{{.*}} to i64 +//AMDGCN: ptrtoint ptr addrspace(5) %{{.*}} to i64 ptrdiff_t test_sub_private(private char* x, private char *y) { return x - y; } //SZ32: define{{.*}} i32 @test_sub_mix(ptr noundef %x, ptr addrspace(4) noundef %y) -//SZ32: ptrtoaddr ptr %{{.*}} to i32 -//SZ32: ptrtoaddr ptr addrspace(4) %{{.*}} to i32 +//SZ32: ptrtoint ptr %{{.*}} to i32 +//SZ32: ptrtoint 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: ptrtoaddr ptr addrspace(4) %{{.*}} to i64 +//SZ64ONLY: ptrtoint ptr %{{.*}} to i64 +//SZ64ONLY: ptrtoint 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: ptrtoaddr ptr %{{.*}} to i64 -//AMDGCN: zext i32 %{{.*}} to i64 +//AMDGCN: ptrtoint ptr addrspace(5) %{{.*}} to i64 +//AMDGCN: ptrtoint ptr %{{.*}} to i64 ptrdiff_t test_sub_mix(private char* x, generic char *y) { return x - y; } diff --git a/clang/test/OpenMP/depobj_codegen.cpp b/clang/test/OpenMP/depobj_codegen.cpp index 35eb1497d95d4..b3bcd76e237dc 100644 --- a/clang/test/OpenMP/depobj_codegen.cpp +++ b/clang/test/OpenMP/depobj_codegen.cpp @@ -115,8 +115,8 @@ int main(int argc, char **argv) { // CHECK: [[ARGV:%.+]] = load ptr, ptr [[ARGV_ADDR]], align 8 // CHECK: [[END_ADDR:%.+]] = getelementptr inbounds ptr, ptr [[ARGV]], i64 0 // CHECK: [[END:%.+]] = load ptr, ptr [[END_ADDR]], align 8 -// CHECK: [[BEGIN_INT:%.+]] = ptrtoaddr ptr [[BEGIN]] to i64 -// CHECK: [[END_INT:%.+]] = ptrtoaddr ptr [[END]] to i64 +// CHECK: [[BEGIN_INT:%.+]] = ptrtoint ptr [[BEGIN]] to i64 +// CHECK: [[END_INT:%.+]] = ptrtoint ptr [[END]] to i64 // CHECK: [[BE_SUB:%.+]] = sub i64 [[BEGIN_INT]], [[END_INT]] // CHECK: [[BE_SUB_ST_SUB:%.+]] = add nsw i64 [[BE_SUB]], 1 // CHECK: [[BE_SUB_ST_SUB_1_SUB:%.+]] = sub nsw i64 [[BE_SUB_ST_SUB]], 1 @@ -148,8 +148,8 @@ int main(int argc, char **argv) { // CHECK: [[ARGV:%.+]] = load ptr, ptr [[ARGV_ADDR]], align 8 // CHECK: [[END_ADDR:%.+]] = getelementptr inbounds ptr, ptr [[ARGV]], i64 0 // CHECK: [[END:%.+]] = load ptr, ptr [[END_ADDR]], align 8 -// CHECK: [[BEGIN_INT:%.+]] = ptrtoaddr ptr [[BEGIN]] to i64 -// CHECK: [[END_INT:%.+]] = ptrtoaddr ptr [[END]] to i64 +// CHECK: [[BEGIN_INT:%.+]] = ptrtoint ptr [[BEGIN]] to i64 +// CHECK: [[END_INT:%.+]] = ptrtoint ptr [[END]] to i64 // CHECK: [[BE_SUB:%.+]] = sub i64 [[BEGIN_INT]], [[END_INT]] // CHECK: [[BE_SUB_ST_SUB:%.+]] = add nsw i64 [[BE_SUB]], 1 // CHECK: [[BE_SUB_ST_SUB_1_SUB:%.+]] = sub nsw i64 [[BE_SUB_ST_SUB]], 1 diff --git a/clang/test/OpenMP/for_range_loop_codegen.cpp b/clang/test/OpenMP/for_range_loop_codegen.cpp index 06f700d8330a8..ca094fc664a5f 100644 --- a/clang/test/OpenMP/for_range_loop_codegen.cpp +++ b/clang/test/OpenMP/for_range_loop_codegen.cpp @@ -49,7 +49,7 @@ template void foo<int>(); // CHECK-NEXT: [[R_ADDR:%.*]] = alloca ptr, align 8 // CHECK-NEXT: store ptr [[R]], ptr [[R_ADDR]], align 8 // CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0 -// CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META2:![0-9]+]], !align [[META3:![0-9]+]] +// CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META3:![0-9]+]], !align [[META4:![0-9]+]] // CHECK-NEXT: [[DATA:%.*]] = getelementptr inbounds nuw [[STRUCT_RANGE:%.*]], ptr [[TMP0]], i32 0, i32 0 // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[DATA]], i64 0, i64 0 // CHECK-NEXT: store ptr [[ARRAYDECAY]], ptr [[PTR]], align 8 @@ -65,7 +65,7 @@ template void foo<int>(); // CHECK-NEXT: [[R_ADDR:%.*]] = alloca ptr, align 8 // CHECK-NEXT: store ptr [[R]], ptr [[R_ADDR]], align 8 // CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0 -// CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META2]], !align [[META3]] +// CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META3]], !align [[META4]] // CHECK-NEXT: [[DATA:%.*]] = getelementptr inbounds nuw [[STRUCT_RANGE:%.*]], ptr [[TMP0]], i32 0, i32 0 // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[DATA]], i64 0, i64 0 // CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY]], i64 4 @@ -110,20 +110,20 @@ template void foo<int>(); // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[CLASS_ANON:%.*]], ptr [[THIS1]], i32 0, i32 0 // CHECK-NEXT: store ptr [[TMP1]], ptr [[__RANGE3]], align 8 -// CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META2]], !align [[META3]] +// CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]] // CHECK-NEXT: [[CALL:%.*]] = call ptr @_Z5beginRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP2]]) // CHECK-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[__BEGIN3]], i32 0, i32 0 // CHECK-NEXT: store ptr [[CALL]], ptr [[COERCE_DIVE]], align 8 -// CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META2]], !align [[META3]] +// CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]] // CHECK-NEXT: [[CALL2:%.*]] = call ptr @_Z3endRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP3]]) // CHECK-NEXT: [[COERCE_DIVE3:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[__END3]], i32 0, i32 0 // CHECK-NEXT: store ptr [[CALL2]], ptr [[COERCE_DIVE3]], align 8 -// CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META2]], !align [[META3]] +// CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]] // CHECK-NEXT: [[CALL4:%.*]] = call ptr @_Z5beginRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP4]]) // CHECK-NEXT: [[COERCE_DIVE5:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[DOTCAPTURE_EXPR_]], i32 0, i32 0 // CHECK-NEXT: store ptr [[CALL4]], ptr [[COERCE_DIVE5]], align 8 // CHECK-NEXT: store ptr [[__END3]], ptr [[DOTCAPTURE_EXPR_6]], align 8 -// CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[D... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/219203 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
