diff options
27 files changed, 269 insertions, 268 deletions
diff --git a/clang/test/CodeGen/attr-noundef.cpp b/clang/test/CodeGen/attr-noundef.cpp index abdf949..30c42827 100644 --- a/clang/test/CodeGen/attr-noundef.cpp +++ b/clang/test/CodeGen/attr-noundef.cpp @@ -10,157 +10,158 @@ // TODO: No structs may currently be marked noundef namespace check_structs { -struct Trivial { - int a; -}; -Trivial ret_trivial() { return {}; } -void pass_trivial(Trivial e) {} -// CHECK-INTEL: [[DEF:define( dso_local)?]] i32 @{{.*}}ret_trivial -// CHECK-AARCH: [[DEF:define( dso_local)?]] i32 @{{.*}}ret_trivial -// CHECK-INTEL: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i32 % -// CHECK-AARCH: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i64 % - -struct NoCopy { - int a; - NoCopy(NoCopy &) = delete; -}; -NoCopy ret_nocopy() { return {}; } -void pass_nocopy(NoCopy e) {} -// CHECK: [[DEF]] void @{{.*}}ret_nocopy{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % -// CHECK: [[DEF]] void @{{.*}}pass_nocopy{{.*}}(ptr noundef % - -struct Huge { - int a[1024]; -}; -Huge ret_huge() { return {}; } -void pass_huge(Huge h) {} -// CHECK: [[DEF]] void @{{.*}}ret_huge{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % -// CHECK: [[DEF]] void @{{.*}}pass_huge{{.*}}(ptr noundef -} // namespace check_structs - -//************ Passing unions by value -// No unions may be marked noundef - -namespace check_unions { -union Trivial { - int a; -}; -Trivial ret_trivial() { return {}; } -void pass_trivial(Trivial e) {} -// CHECK-INTEL: [[DEF]] i32 @{{.*}}ret_trivial -// CHECK-AARCH: [[DEF]] i32 @{{.*}}ret_trivial -// CHECK-INTEL: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i32 % -// CHECK-AARCH: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i64 % - -union NoCopy { - int a; - NoCopy(NoCopy &) = delete; -}; -NoCopy ret_nocopy() { return {}; } -void pass_nocopy(NoCopy e) {} -// CHECK: [[DEF]] void @{{.*}}ret_nocopy{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % -// CHECK: [[DEF]] void @{{.*}}pass_nocopy{{.*}}(ptr noundef % -} // namespace check_unions - -//************ Passing `this` pointers -// `this` pointer must always be defined - -namespace check_this { -struct Object { - int data[]; - - Object() { - this->data[0] = 0; + struct Trivial { + int a; + }; + Trivial ret_trivial() { return {}; } + void pass_trivial(Trivial e) {} + // CHECK-INTEL: [[DEF:define( dso_local)?]] i32 @{{.*}}ret_trivial + // CHECK-AARCH: [[DEF:define( dso_local)?]] i32 @{{.*}}ret_trivial + // CHECK-INTEL: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i32 % + // CHECK-AARCH: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i64 % + + struct NoCopy { + int a; + NoCopy(NoCopy &) = delete; + }; + NoCopy ret_nocopy() { return {}; } + void pass_nocopy(NoCopy e) {} + // CHECK: [[DEF]] void @{{.*}}ret_nocopy{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % + // CHECK: [[DEF]] void @{{.*}}pass_nocopy{{.*}}(ptr noundef % + + struct Huge { + int a[1024]; + }; + Huge ret_huge() { return {}; } + void pass_huge(Huge h) {} + // CHECK: [[DEF]] void @{{.*}}ret_huge{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % + // CHECK: [[DEF]] void @{{.*}}pass_huge{{.*}}(ptr noundef + } // namespace check_structs + + //************ Passing unions by value + // No unions may be marked noundef + + namespace check_unions { + union Trivial { + int a; + }; + Trivial ret_trivial() { return {}; } + void pass_trivial(Trivial e) {} + // CHECK-INTEL: [[DEF]] i32 @{{.*}}ret_trivial + // CHECK-AARCH: [[DEF]] i32 @{{.*}}ret_trivial + // CHECK-INTEL: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i32 % + // CHECK-AARCH: [[DEF]] void @{{.*}}pass_trivial{{.*}}(i64 % + + union NoCopy { + int a; + NoCopy(NoCopy &) = delete; + }; + NoCopy ret_nocopy() { return {}; } + void pass_nocopy(NoCopy e) {} + // CHECK: [[DEF]] void @{{.*}}ret_nocopy{{.*}}(ptr dead_on_unwind noalias writable sret({{[^)]+}}) align 4 % + // CHECK: [[DEF]] void @{{.*}}pass_nocopy{{.*}}(ptr noundef % + } // namespace check_unions + + //************ Passing `this` pointers + // `this` pointer must always be defined + + namespace check_this { + struct Object { + int data[]; + + Object() { + this->data[0] = 0; + } + int getData() { + return this->data[0]; + } + Object *getThis() { + return this; + } + }; + + void use_object() { + Object obj; + obj.getData(); + obj.getThis(); } - int getData() { - return this->data[0]; + // CHECK: define linkonce_odr void @{{.*}}Object{{.*}}(ptr noalias noundef nonnull align 4 dereferenceable(1) % + // CHECK: define linkonce_odr noundef i32 @{{.*}}Object{{.*}}getData{{.*}}(ptr noundef nonnull align 4 dereferenceable(1) % + // CHECK: define linkonce_odr noundef ptr @{{.*}}Object{{.*}}getThis{{.*}}(ptr noundef nonnull align 4 dereferenceable(1) % + } // namespace check_this + + //************ Passing vector types + + namespace check_vecs { + typedef int __attribute__((vector_size(12))) i32x3; + i32x3 ret_vec() { + return {}; } - Object *getThis() { - return this; + void pass_vec(i32x3 v) { } -}; - -void use_object() { - Object obj; - obj.getData(); - obj.getThis(); -} -// CHECK: define linkonce_odr void @{{.*}}Object{{.*}}(ptr noundef nonnull align 4 dereferenceable(1) % -// CHECK: define linkonce_odr noundef i32 @{{.*}}Object{{.*}}getData{{.*}}(ptr noundef nonnull align 4 dereferenceable(1) % -// CHECK: define linkonce_odr noundef ptr @{{.*}}Object{{.*}}getThis{{.*}}(ptr noundef nonnull align 4 dereferenceable(1) % -} // namespace check_this - -//************ Passing vector types - -namespace check_vecs { -typedef int __attribute__((vector_size(12))) i32x3; -i32x3 ret_vec() { - return {}; -} -void pass_vec(i32x3 v) { -} - -// CHECK: [[DEF]] noundef <3 x i32> @{{.*}}ret_vec{{.*}}() -// CHECK-INTEL: [[DEF]] void @{{.*}}pass_vec{{.*}}(<3 x i32> noundef % -// CHECK-AARCH: [[DEF]] void @{{.*}}pass_vec{{.*}}(<4 x i32> % -} // namespace check_vecs - -//************ Passing exotic types -// Function/Array pointers, Function member / Data member pointers, nullptr_t, ExtInt types - -namespace check_exotic { -struct Object { - int mfunc(); - int mdata; -}; -typedef int Object::*mdptr; -typedef int (Object::*mfptr)(); -typedef decltype(nullptr) nullptr_t; -typedef int (*arrptr)[32]; -typedef int (*fnptr)(int); - -arrptr ret_arrptr() { - return nullptr; -} -fnptr ret_fnptr() { - return nullptr; -} -mdptr ret_mdptr() { - return nullptr; -} -mfptr ret_mfptr() { - return nullptr; -} -nullptr_t ret_npt() { - return nullptr; -} -void pass_npt(nullptr_t t) { -} -_BitInt(3) ret_BitInt() { - return 0; -} -void pass_BitInt(_BitInt(3) e) { -} -void pass_large_BitInt(_BitInt(127) e) { -} - -// Pointers to arrays/functions are always noundef -// CHECK: [[DEF]] noundef ptr @{{.*}}ret_arrptr{{.*}}() -// CHECK: [[DEF]] noundef ptr @{{.*}}ret_fnptr{{.*}}() - -// Pointers to members are never noundef -// CHECK: [[DEF]] i64 @{{.*}}ret_mdptr{{.*}}() -// CHECK-INTEL: [[DEF]] { i64, i64 } @{{.*}}ret_mfptr{{.*}}() -// CHECK-AARCH: [[DEF]] [2 x i64] @{{.*}}ret_mfptr{{.*}}() - -// nullptr_t is never noundef -// CHECK: [[DEF]] ptr @{{.*}}ret_npt{{.*}}() -// CHECK: [[DEF]] void @{{.*}}pass_npt{{.*}}(ptr % - -// CHECK-INTEL: [[DEF]] noundef signext i3 @{{.*}}ret_BitInt{{.*}}() -// CHECK-AARCH: [[DEF]] noundef i3 @{{.*}}ret_BitInt{{.*}}() -// CHECK-INTEL: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef signext % -// CHECK-AARCH: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef % -// CHECK-INTEL: [[DEF]] void @{{.*}}pass_large_BitInt{{.*}}(i64 noundef %{{.*}}, i64 noundef % -// CHECK-AARCH: [[DEF]] void @{{.*}}pass_large_BitInt{{.*}}(i127 noundef % -} // namespace check_exotic + + // CHECK: [[DEF]] noundef <3 x i32> @{{.*}}ret_vec{{.*}}() + // CHECK-INTEL: [[DEF]] void @{{.*}}pass_vec{{.*}}(<3 x i32> noundef % + // CHECK-AARCH: [[DEF]] void @{{.*}}pass_vec{{.*}}(<4 x i32> % + } // namespace check_vecs + + //************ Passing exotic types + // Function/Array pointers, Function member / Data member pointers, nullptr_t, ExtInt types + + namespace check_exotic { + struct Object { + int mfunc(); + int mdata; + }; + typedef int Object::*mdptr; + typedef int (Object::*mfptr)(); + typedef decltype(nullptr) nullptr_t; + typedef int (*arrptr)[32]; + typedef int (*fnptr)(int); + + arrptr ret_arrptr() { + return nullptr; + } + fnptr ret_fnptr() { + return nullptr; + } + mdptr ret_mdptr() { + return nullptr; + } + mfptr ret_mfptr() { + return nullptr; + } + nullptr_t ret_npt() { + return nullptr; + } + void pass_npt(nullptr_t t) { + } + _BitInt(3) ret_BitInt() { + return 0; + } + void pass_BitInt(_BitInt(3) e) { + } + void pass_large_BitInt(_BitInt(127) e) { + } + + // Pointers to arrays/functions are always noundef + // CHECK: [[DEF]] noundef ptr @{{.*}}ret_arrptr{{.*}}() + // CHECK: [[DEF]] noundef ptr @{{.*}}ret_fnptr{{.*}}() + + // Pointers to members are never noundef + // CHECK: [[DEF]] i64 @{{.*}}ret_mdptr{{.*}}() + // CHECK-INTEL: [[DEF]] { i64, i64 } @{{.*}}ret_mfptr{{.*}}() + // CHECK-AARCH: [[DEF]] [2 x i64] @{{.*}}ret_mfptr{{.*}}() + + // nullptr_t is never noundef + // CHECK: [[DEF]] ptr @{{.*}}ret_npt{{.*}}() + // CHECK: [[DEF]] void @{{.*}}pass_npt{{.*}}(ptr % + + // CHECK-INTEL: [[DEF]] noundef signext i3 @{{.*}}ret_BitInt{{.*}}() + // CHECK-AARCH: [[DEF]] noundef i3 @{{.*}}ret_BitInt{{.*}}() + // CHECK-INTEL: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef signext % + // CHECK-AARCH: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef % + // CHECK-INTEL: [[DEF]] void @{{.*}}pass_large_BitInt{{.*}}(i64 noundef %{{.*}}, i64 noundef % + // CHECK-AARCH: [[DEF]] void @{{.*}}pass_large_BitInt{{.*}}(i127 noundef % + } // namespace check_exotic +
\ No newline at end of file diff --git a/clang/test/CodeGen/paren-list-agg-init.cpp b/clang/test/CodeGen/paren-list-agg-init.cpp index 2353523..e674a34 100644 --- a/clang/test/CodeGen/paren-list-agg-init.cpp +++ b/clang/test/CodeGen/paren-list-agg-init.cpp @@ -390,9 +390,9 @@ namespace gh61145 { // CHECK-NEXT: [[V:%.*v.*]] = alloca [[STRUCT_VEC]], align 1 // CHECK-NEXT: [[AGG_TMP_ENSURED:%.*agg.tmp.ensured.*]] = alloca [[STRUCT_S1]], align 1 // a.k.a. Vec::Vec() - // CHECK-NEXT: call void @_ZN7gh611453VecC1Ev(ptr noundef nonnull align 1 dereferenceable(1) [[V]]) + // CHECK-NEXT: call void @_ZN7gh611453VecC1Ev(ptr noalias noundef nonnull align 1 dereferenceable(1) [[V]]) // a.k.a. Vec::Vec(Vec&&) - // CHECK-NEXT: call void @_ZN7gh611453VecC1EOS0_(ptr noundef nonnull align 1 dereferenceable(1) [[AGG_TMP_ENSURED]], ptr noundef nonnull align 1 dereferenceable(1) [[V]]) + // CHECK-NEXT: call void @_ZN7gh611453VecC1EOS0_(ptr noalias noundef nonnull align 1 dereferenceable(1) [[AGG_TMP_ENSURED]], ptr noundef nonnull align 1 dereferenceable(1) [[V]]) // a.k.a. S1::~S1() // CHECK-NEXT: call void @_ZN7gh611452S1D1Ev(ptr noundef nonnull align 1 dereferenceable(1) [[AGG_TMP_ENSURED]]) // a.k.a.Vec::~Vec() @@ -410,9 +410,9 @@ namespace gh61145 { // CHECK-NEXT: [[V:%.*v.*]] = alloca [[STRUCT_VEC]], align 1 // CHECK-NEXT: [[AGG_TMP_ENSURED:%.*agg.tmp.ensured.*]] = alloca [[STRUCT_S2]], align 1 // a.k.a. Vec::Vec() - // CHECK-NEXT: call void @_ZN7gh611453VecC1Ev(ptr noundef nonnull align 1 dereferenceable(1) [[V]]) + // CHECK-NEXT: call void @_ZN7gh611453VecC1Ev(ptr noalias noundef nonnull align 1 dereferenceable(1) [[V]]) // a.k.a. Vec::Vec(Vec&&) - // CHECK-NEXT: call void @_ZN7gh611453VecC1EOS0_(ptr noundef nonnull align 1 dereferenceable(1) [[AGG_TMP_ENSURED]], ptr noundef nonnull align 1 dereferenceable(1) [[V]]) + // CHECK-NEXT: call void @_ZN7gh611453VecC1EOS0_(ptr noalias noundef nonnull align 1 dereferenceable(1) [[AGG_TMP_ENSURED]], ptr noundef nonnull align 1 dereferenceable(1) [[V]]) // CHECK-NEXT: [[C:%.*c.*]] = getelementptr inbounds nuw [[STRUCT_S2]], ptr [[AGG_TMP_ENSURED]], i32 0, i32 // CHECK-NEXT: store i8 0, ptr [[C]], align 1 // a.k.a. S2::~S2() diff --git a/clang/test/CodeGen/temporary-lifetime.cpp b/clang/test/CodeGen/temporary-lifetime.cpp index 9f085d4..3c2715c 100644 --- a/clang/test/CodeGen/temporary-lifetime.cpp +++ b/clang/test/CodeGen/temporary-lifetime.cpp @@ -22,12 +22,12 @@ T Baz(); void Test1() { // CHECK-DTOR-LABEL: Test1 // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) - // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) + // CHECK-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR]]) // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) - // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) + // CHECK-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR]]) // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) @@ -35,11 +35,11 @@ void Test1() { // CHECK-NO-DTOR-LABEL: Test1 // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) - // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) + // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) - // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) + // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) // CHECK-NO-DTOR: } @@ -56,10 +56,10 @@ void Test1() { void Test2() { // CHECK-DTOR-LABEL: Test2 // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR1:.+]]) - // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) + // CHECK-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR2:.+]]) - // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) + // CHECK-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR2]]) // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR2]]) @@ -69,10 +69,10 @@ void Test2() { // CHECK-NO-DTOR-LABEL: Test2 // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR1:.+]]) - // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) + // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR2:.+]]) - // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) + // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr noalias nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR2]]) // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR1]]) diff --git a/clang/test/CodeGenCUDA/record-layout.cu b/clang/test/CodeGenCUDA/record-layout.cu index 847a81d..a94987e 100644 --- a/clang/test/CodeGenCUDA/record-layout.cu +++ b/clang/test/CodeGenCUDA/record-layout.cu @@ -118,7 +118,7 @@ __device__ void J_dev(J *j) { // DEV: define dso_local amdgpu_kernel void @_Z8J_kernelv() // DEV: %j = alloca %struct.J, align 8, addrspace(5) // DEV: %j.ascast = addrspacecast ptr addrspace(5) %j to ptr -// DEV: call void @_ZN1JC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %j.ascast) +// DEV: call void @_ZN1JC1Ev(ptr noalias noundef nonnull align 8 dereferenceable(24) %j.ascast) // DEV: call void @_Z5J_devP1J(ptr noundef %j.ascast) __global__ void J_kernel() { @@ -153,7 +153,7 @@ void J_host(J *j) { // HOST: define dso_local void @"?test_J@@YAXXZ"() // HOST: %j = alloca %struct.J, align 8 -// HOST: %call = call noundef ptr @"??0J@@QEAA@XZ"(ptr noundef nonnull align 8 dereferenceable(24) %j) +// HOST: %call = call noundef ptr @"??0J@@QEAA@XZ"(ptr noalias noundef nonnull align 8 dereferenceable(24) %j) // HOST: call void @"?J_host@@YAXPEAUJ@@@Z"(ptr noundef %j) void test_J() { @@ -162,37 +162,37 @@ void test_J() { J_kernel<<<1, 1>>>(); } -// HOST: define linkonce_odr dso_local noundef ptr @"??0J@@QEAA@XZ"(ptr noundef nonnull returned align 8 dereferenceable(24) %this) +// HOST: define linkonce_odr dso_local noundef ptr @"??0J@@QEAA@XZ"(ptr noalias noundef nonnull returned align 8 dereferenceable(24) %this) // HOST: %this.addr = alloca ptr, align 8 // HOST: store ptr %this, ptr %this.addr, align 8 // HOST: %this1 = load ptr, ptr %this.addr, align 8 -// HOST: %call = call noundef ptr @"??0I@@QEAA@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 +// HOST: %call = call noundef ptr @"??0I@@QEAA@XZ"(ptr noalias noundef nonnull align 8 dereferenceable(16) %this1) #5 // HOST: store ptr @"??_7J@@6B@", ptr %this1, align 8 // HOST: ret ptr %this1 -// HOST: define linkonce_odr dso_local noundef ptr @"??0I@@QEAA@XZ"(ptr noundef nonnull returned align 8 dereferenceable(16) %this) +// HOST: define linkonce_odr dso_local noundef ptr @"??0I@@QEAA@XZ"(ptr noalias noundef nonnull returned align 8 dereferenceable(16) %this) // HOST: %this.addr = alloca ptr, align 8 // HOST: store ptr %this, ptr %this.addr, align 8 // HOST: %this1 = load ptr, ptr %this.addr, align 8 // HOST: store ptr @"??_7I@@6B@", ptr %this1, align 8 // HOST: ret ptr %this1 -// DEV: define linkonce_odr void @_ZN1JC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) +// DEV: define linkonce_odr void @_ZN1JC1Ev(ptr noalias noundef nonnull align 8 dereferenceable(24) %this) // DEV: %this.addr = alloca ptr, align 8, addrspace(5) // DEV: %this.addr.ascast = addrspacecast ptr addrspace(5) %this.addr to ptr // DEV: store ptr %this, ptr %this.addr.ascast, align 8 // DEV: %this1 = load ptr, ptr %this.addr.ascast, align 8 -// DEV: call void @_ZN1JC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) +// DEV: call void @_ZN1JC2Ev(ptr noalias noundef nonnull align 8 dereferenceable(24) %this1) -// DEV: define linkonce_odr void @_ZN1JC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) +// DEV: define linkonce_odr void @_ZN1JC2Ev(ptr noalias noundef nonnull align 8 dereferenceable(24) %this) // DEV: %this.addr = alloca ptr, align 8, addrspace(5) // DEV: %this.addr.ascast = addrspacecast ptr addrspace(5) %this.addr to ptr // DEV: store ptr %this, ptr %this.addr.ascast, align 8 // DEV: %this1 = load ptr, ptr %this.addr.ascast, align 8 -// DEV: call void @_ZN1IC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) +// DEV: call void @_ZN1IC2Ev(ptr noalias noundef nonnull align 8 dereferenceable(16) %this1) // DEV: store ptr addrspace(1) getelementptr inbounds inrange(-16, 24) ({ [5 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTV1J, i32 0, i32 0, i32 2), ptr %this1, align 8 -// DEV: define linkonce_odr void @_ZN1IC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) +// DEV: define linkonce_odr void @_ZN1IC2Ev(ptr noalias noundef nonnull align 8 dereferenceable(16) %this) // DEV: %this.addr = alloca ptr, align 8, addrspace(5) // DEV: %this.addr.ascast = addrspacecast ptr addrspace(5) %this.addr to ptr // DEV: store ptr %this, ptr %this.addr.ascast, align 8 diff --git a/clang/test/CodeGenCUDA/vtbl.cu b/clang/test/CodeGenCUDA/vtbl.cu index 4c3bb84..36ee41ef 100644 --- a/clang/test/CodeGenCUDA/vtbl.cu +++ b/clang/test/CodeGenCUDA/vtbl.cu @@ -3,7 +3,7 @@ #include "Inputs/cuda.h" -// CHECK-LABEL: define {{.*}}@_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) +// CHECK-LABEL: define {{.*}}@_ZN1AC2Ev(ptr noalias noundef nonnull align 8 dereferenceable(8) %this) // CHECK: store ptr %this, ptr %this.addr.ascast // CHECK: %this1 = load ptr, ptr %this.addr.ascast // CHECK: store ptr addrspace(1) {{.*}} @_ZTV1A{{.*}}, ptr %this1 diff --git a/clang/test/CodeGenCXX/LoongArch/abi-lp64d-struct-inherit.cpp b/clang/test/CodeGenCXX/LoongArch/abi-lp64d-struct-inherit.cpp index 6d80185..ffb707d 100644 --- a/clang/test/CodeGenCXX/LoongArch/abi-lp64d-struct-inherit.cpp +++ b/clang/test/CodeGenCXX/LoongArch/abi-lp64d-struct-inherit.cpp @@ -69,7 +69,7 @@ struct child5_virtual_s : virtual parent5_virtual_s { float f1; }; -// CHECK-LABEL: define{{.*}} void @_ZN16child5_virtual_sC1EOS_(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef nonnull align 8 dereferenceable(12) %0) +// CHECK-LABEL: define{{.*}} void @_ZN16child5_virtual_sC1EOS_(ptr noalias noundef nonnull align 8 dereferenceable(12) %this, ptr noundef nonnull align 8 dereferenceable(12) %0) struct child5_virtual_s int32_float_virtual_struct_inheritance(struct child5_virtual_s a) { return a; } diff --git a/clang/test/CodeGenCXX/aix-static-init-temp-spec-and-inline-var.cpp b/clang/test/CodeGenCXX/aix-static-init-temp-spec-and-inline-var.cpp index 5582ede..aca6aae 100644 --- a/clang/test/CodeGenCXX/aix-static-init-temp-spec-and-inline-var.cpp +++ b/clang/test/CodeGenCXX/aix-static-init-temp-spec-and-inline-var.cpp @@ -52,8 +52,8 @@ A<int> A<int>::instance = bar(); // CHECK: define internal void @__cxx_global_var_init() [[ATTR:#[0-9]+]] { // CHECK: entry: -// CHECK32: call void @_ZN5test15Test1C1Ei(ptr noundef{{[^,]*}} @_ZN5test12t0E, i32 noundef 2) -// CHECK64: call void @_ZN5test15Test1C1Ei(ptr noundef{{[^,]*}} @_ZN5test12t0E, i32 noundef signext 2) +// CHECK32: call void @_ZN5test15Test1C1Ei(ptr noalias noundef{{[^,]*}} @_ZN5test12t0E, i32 noundef 2) +// CHECK64: call void @_ZN5test15Test1C1Ei(ptr noalias noundef{{[^,]*}} @_ZN5test12t0E, i32 noundef signext 2) // CHECK: %0 = call i32 @atexit(ptr @__dtor__ZN5test12t0E) // CHECK: ret void // CHECK: } @@ -90,8 +90,8 @@ A<int> A<int>::instance = bar(); // CHECK: br i1 %tobool, label %init, label %init.end // CHECK: init: -// CHECK32: call void @_ZN5test15Test1C1Ei(ptr noundef{{[^,]*}} @_ZN5test12t2E, i32 noundef 2) -// CHECK64: call void @_ZN5test15Test1C1Ei(ptr noundef{{[^,]*}} @_ZN5test12t2E, i32 noundef signext 2) +// CHECK32: call void @_ZN5test15Test1C1Ei(ptr noalias noundef{{[^,]*}} @_ZN5test12t2E, i32 noundef 2) +// CHECK64: call void @_ZN5test15Test1C1Ei(ptr noalias noundef{{[^,]*}} @_ZN5test12t2E, i32 noundef signext 2) // CHECK: %2 = call i32 @atexit(ptr @__dtor__ZN5test12t2E) // CHECK: call void @__cxa_guard_release(ptr @_ZGVN5test12t2E) // CHECK: br label %init.end diff --git a/clang/test/CodeGenCXX/atomicinit.cpp b/clang/test/CodeGenCXX/atomicinit.cpp index 2f2b746..6d5d36e 100644 --- a/clang/test/CodeGenCXX/atomicinit.cpp +++ b/clang/test/CodeGenCXX/atomicinit.cpp @@ -70,15 +70,15 @@ namespace PR18097 { }; // CHECK-LABEL: define {{.*}} @__cxx_global_var_init - // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noundef {{[^,]*}} @_ZN7PR180977dynamic1aE, i32 noundef 1) + // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noalias noundef {{[^,]*}} @_ZN7PR180977dynamic1aE, i32 noundef 1) _Atomic(X) a = X(1); // CHECK-LABEL: define {{.*}} @__cxx_global_var_init - // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noundef {{[^,]*}} @_ZN7PR180977dynamic1bE, i32 noundef 2) + // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noalias noundef {{[^,]*}} @_ZN7PR180977dynamic1bE, i32 noundef 2) _Atomic(X) b(X(2)); // CHECK-LABEL: define {{.*}} @__cxx_global_var_init - // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noundef {{[^,]*}} @_ZN7PR180977dynamic1cE, i32 noundef 3) + // CHECK: call void @_ZN7PR180977dynamic1XC1Ei(ptr noalias noundef {{[^,]*}} @_ZN7PR180977dynamic1cE, i32 noundef 3) _Atomic(X) c{X(3)}; struct Y { diff --git a/clang/test/CodeGenCXX/bug135668.cpp b/clang/test/CodeGenCXX/bug135668.cpp index 08743bd..f72718f 100644 --- a/clang/test/CodeGenCXX/bug135668.cpp +++ b/clang/test/CodeGenCXX/bug135668.cpp @@ -26,7 +26,7 @@ int Foo::test_method() { // CHECK: store ptr %this, ptr [[THIS_ADDR]], align 8 // CHECK: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK: [[ALLOCATION:%.*]] = call noundef ptr @_ZN9TestClassnwEm(i64 noundef 4) -// CHECK: [[INITIALIZEDOBJ:%.*]] = invoke noundef ptr @_ZN9TestClassC1Ev(ptr noundef nonnull align 4 dereferenceable(4) [[ALLOCATION]]) +// CHECK: [[INITIALIZEDOBJ:%.*]] = invoke noundef ptr @_ZN9TestClassC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) [[ALLOCATION]]) // CHECK-NEXT: to label %[[INVOKE_CONT:.*]] unwind label %[[LPAD:.*]] // CHECK: [[INVOKE_CONT]]: // CHECK: store ptr [[ALLOCATION]], ptr [[OBJ]], align 8 diff --git a/clang/test/CodeGenCXX/control-flow-in-stmt-expr.cpp b/clang/test/CodeGenCXX/control-flow-in-stmt-expr.cpp index 4eafa72..e78518b 100644 --- a/clang/test/CodeGenCXX/control-flow-in-stmt-expr.cpp +++ b/clang/test/CodeGenCXX/control-flow-in-stmt-expr.cpp @@ -161,11 +161,11 @@ void ArrayInit() { // CHECK: store ptr %arr, ptr %arrayinit.endOfInit, align 8 Printy arr[4] = { Printy("a"), - // CHECK: call void @_ZN6PrintyC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %arr, ptr noundef @.str) + // CHECK: call void @_ZN6PrintyC1EPKc(ptr noalias noundef nonnull align 8 dereferenceable(8) %arr, ptr noundef @.str) // CHECK: [[ARRAYINIT_ELEMENT1:%.+]] = getelementptr inbounds %struct.Printy, ptr %arr, i64 1 // CHECK: store ptr [[ARRAYINIT_ELEMENT1]], ptr %arrayinit.endOfInit, align 8 Printy("b"), - // CHECK: call void @_ZN6PrintyC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) [[ARRAYINIT_ELEMENT1]], ptr noundef @.str.1) + // CHECK: call void @_ZN6PrintyC1EPKc(ptr noalias noundef nonnull align 8 dereferenceable(8) [[ARRAYINIT_ELEMENT1]], ptr noundef @.str.1) // CHECK: [[ARRAYINIT_ELEMENT2:%.+]] = getelementptr inbounds %struct.Printy, ptr %arr, i64 2 // CHECK: store ptr [[ARRAYINIT_ELEMENT2]], ptr %arrayinit.endOfInit, align 8 ({ diff --git a/clang/test/CodeGenCXX/cxx2a-consteval.cpp b/clang/test/CodeGenCXX/cxx2a-consteval.cpp index bfeabc9..9c106db 100644 --- a/clang/test/CodeGenCXX/cxx2a-consteval.cpp +++ b/clang/test/CodeGenCXX/cxx2a-consteval.cpp @@ -301,7 +301,7 @@ void f() { // EVAL-FN-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // EVAL-FN-NEXT: store ptr {{.*}}, ptr [[THIS_ADDR]], align 8 // EVAL-FN-NEXT: [[THIS:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 -// EVAL-FN-NEXT: call void @_ZN7GH930401CC2Ev(ptr noundef nonnull align 1 dereferenceable(1) [[THIS]]) +// EVAL-FN-NEXT: call void @_ZN7GH930401CC2Ev(ptr noalias noundef nonnull align 1 dereferenceable(1) [[THIS]]) // EVAL-FN-NEXT: ret void } } diff --git a/clang/test/CodeGenCXX/cxx2b-deducing-this.cpp b/clang/test/CodeGenCXX/cxx2b-deducing-this.cpp index 8a78463d..e3439eb 100644 --- a/clang/test/CodeGenCXX/cxx2b-deducing-this.cpp +++ b/clang/test/CodeGenCXX/cxx2b-deducing-this.cpp @@ -106,7 +106,7 @@ void test_temporary() { //CHECK: define dso_local void @_Z14test_temporaryv(){{.*}} //CHECK-NEXT: entry: //CHECK: %ref.tmp = alloca %struct.MaterializedTemporary, align 1 -//CHECK: call void @_ZN21MaterializedTemporaryC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp){{.*}} +//CHECK: call void @_ZN21MaterializedTemporaryC1Ev(ptr noalias noundef nonnull align 1 dereferenceable(1) %ref.tmp){{.*}} //CHECK invoke void @_ZNH21MaterializedTemporary3fooEOS_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp){{.*}} namespace GH86399 { diff --git a/clang/test/CodeGenCXX/gh62818.cpp b/clang/test/CodeGenCXX/gh62818.cpp index ec91b40..d3703b1 100644 --- a/clang/test/CodeGenCXX/gh62818.cpp +++ b/clang/test/CodeGenCXX/gh62818.cpp @@ -17,7 +17,7 @@ template<typename T> struct B { void test() {a = {};} // CHECK: define linkonce_odr void @_ZN1BIiE4testEv - // CHECK: call void @_ZN1AC1Ev(ptr noundef nonnull align 1 dereferenceable(1) + // CHECK: call void @_ZN1AC1Ev(ptr noalias noundef nonnull align 1 dereferenceable(1) // CHECK: [[CALL:%.*]] = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNR1AaSES_ // CHECK: call void @_ZN1AD2Ev(ptr noundef nonnull align 1 dereferenceable(1) diff --git a/clang/test/CodeGenCXX/ibm128-declarations.cpp b/clang/test/CodeGenCXX/ibm128-declarations.cpp index 61ff6ff..09b6b31 100644 --- a/clang/test/CodeGenCXX/ibm128-declarations.cpp +++ b/clang/test/CodeGenCXX/ibm128-declarations.cpp @@ -124,7 +124,7 @@ int main(void) { // CHECK: define dso_local noundef signext i32 @main() // CHECK: entry: // CHECK: %0 = load ppc_fp128, ptr %lf, align 16 -// CHECK: call void @_ZN5CTestC1Eg(ptr noundef nonnull align 16 dereferenceable(32) %ct, ppc_fp128 noundef %0) +// CHECK: call void @_ZN5CTestC1Eg(ptr noalias noundef nonnull align 16 dereferenceable(32) %ct, ppc_fp128 noundef %0) // CHECK: %mem2 = getelementptr inbounds nuw %struct.T1, ptr %tf, i32 0, i32 0 // CHECK: %1 = load ppc_fp128, ptr %mem2, align 16 // CHECK: %2 = load ppc_fp128, ptr %lf, align 16 @@ -137,13 +137,13 @@ int main(void) { // CHECK: ret i32 0 // CHECK: } -// CHECK: define linkonce_odr void @_ZN5CTestC1Eg(ptr noundef nonnull align 16 dereferenceable(32) %this, ppc_fp128 noundef %arg) +// CHECK: define linkonce_odr void @_ZN5CTestC1Eg(ptr noalias noundef nonnull align 16 dereferenceable(32) %this, ppc_fp128 noundef %arg) // CHECK: entry: // CHECK: store ptr %this, ptr %this.addr, align 8 // CHECK: store ppc_fp128 %arg, ptr %arg.addr, align 16 // CHECK: %this1 = load ptr, ptr %this.addr, align 8 // CHECK: %0 = load ppc_fp128, ptr %arg.addr, align 16 -// CHECK: call void @_ZN5CTestC2Eg(ptr noundef nonnull align 16 dereferenceable(32) %this1, ppc_fp128 noundef %0) +// CHECK: call void @_ZN5CTestC2Eg(ptr noalias noundef nonnull align 16 dereferenceable(32) %this1, ppc_fp128 noundef %0) // CHECK: ret void // CHECK: } @@ -157,7 +157,7 @@ int main(void) { // CHECK: ret ppc_fp128 %mul // CHECK: } -// CHECK: define linkonce_odr void @_ZN5CTestC2Eg(ptr noundef nonnull align 16 dereferenceable(32) %this, ppc_fp128 noundef %arg) +// CHECK: define linkonce_odr void @_ZN5CTestC2Eg(ptr noalias noundef nonnull align 16 dereferenceable(32) %this, ppc_fp128 noundef %arg) // CHECK: entry: // CHECK: store ptr %this, ptr %this.addr, align 8 // CHECK: store ppc_fp128 %arg, ptr %arg.addr, align 16 diff --git a/clang/test/CodeGenCXX/init-invariant.cpp b/clang/test/CodeGenCXX/init-invariant.cpp index 974064b..19000ca 100644 --- a/clang/test/CodeGenCXX/init-invariant.cpp +++ b/clang/test/CodeGenCXX/init-invariant.cpp @@ -53,16 +53,16 @@ void e() { static const A a = A(); } -// CHECK: call void @_ZN1AC1Ev(ptr noundef {{[^,]*}} @a) +// CHECK: call void @_ZN1AC1Ev(ptr noalias noundef {{[^,]*}} @a) // CHECK: call {{.*}}@llvm.invariant.start.p0(i64 4, ptr @a) -// CHECK: call void @_ZN2A2C1Ev(ptr noundef {{[^,]*}} @a2) +// CHECK: call void @_ZN2A2C1Ev(ptr noalias noundef {{[^,]*}} @a2) // CHECK: call {{.*}}@llvm.invariant.start.p0(i64 4, ptr @a2) -// CHECK: call void @_ZN1BC1Ev(ptr noundef {{[^,]*}} @b) +// CHECK: call void @_ZN1BC1Ev(ptr noalias noundef {{[^,]*}} @b) // CHECK-NOT: call {{.*}}@llvm.invariant.start.p0(i64 noundef 4, ptr @b) -// CHECK: call void @_ZN1CC1Ev(ptr noundef {{[^,]*}} @c) +// CHECK: call void @_ZN1CC1Ev(ptr noalias noundef {{[^,]*}} @c) // CHECK-NOT: call {{.*}}@llvm.invariant.start.p0(i64 noundef 4, ptr @c) // CHECK: call noundef i32 @_Z1fv( @@ -74,6 +74,6 @@ void e() { // CHECK: call {{.*}}@llvm.invariant.start.p10(i64 4, ptr addrspace(10) @d2) // CHECK-LABEL: define{{.*}} void @_Z1ev( -// CHECK: call void @_ZN1AC1Ev(ptr noundef {{[^,]*}} @_ZZ1evE1a) +// CHECK: call void @_ZN1AC1Ev(ptr noalias noundef {{[^,]*}} @_ZZ1evE1a) // CHECK: call {{.*}}@llvm.invariant.start.p0(i64 4, ptr {{.*}}@_ZZ1evE1a) // CHECK-NOT: llvm.invariant.end diff --git a/clang/test/CodeGenCXX/matrix-casts.cpp b/clang/test/CodeGenCXX/matrix-casts.cpp index 0a946e4..f47b6b1 100644 --- a/clang/test/CodeGenCXX/matrix-casts.cpp +++ b/clang/test/CodeGenCXX/matrix-casts.cpp @@ -326,7 +326,7 @@ public: Foo class_constructor_matrix_ty(matrix_5_5<int> m) { // CHECK-LABEL: define void @_Z27class_constructor_matrix_tyu11matrix_typeILm5ELm5EiE(ptr dead_on_unwind noalias writable sret(%class.Foo) align 4 %agg.result, <25 x i32> noundef %m) // CHECK: [[M:%.*]] = load <25 x i32>, ptr {{.*}}, align 4 - // CHECK-NEXT: call void @_ZN3FooC1Eu11matrix_typeILm5ELm5EiE(ptr noundef nonnull align 4 dereferenceable(40) %agg.result, <25 x i32> noundef [[M]]) + // CHECK-NEXT: call void @_ZN3FooC1Eu11matrix_typeILm5ELm5EiE(ptr noalias noundef nonnull align 4 dereferenceable(40) %agg.result, <25 x i32> noundef [[M]]) // CHECK-NEXT: ret void return Foo(m); @@ -340,7 +340,7 @@ struct Bar { Bar struct_constructor_matrix_ty(matrix_4_4<float> m) { // CHECK-LABEL: define void @_Z28struct_constructor_matrix_tyu11matrix_typeILm4ELm4EfE(ptr dead_on_unwind noalias writable sret(%struct.Bar) align 4 %agg.result, <16 x float> noundef %m) // CHECK: [[M:%.*]] = load <16 x float>, ptr {{.*}}, align 4 - // CHECK-NEXT: call void @_ZN3BarC1Eu11matrix_typeILm4ELm4EfE(ptr noundef nonnull align 4 dereferenceable(40) %agg.result, <16 x float> noundef [[M]]) + // CHECK-NEXT: call void @_ZN3BarC1Eu11matrix_typeILm4ELm4EfE(ptr noalias noundef nonnull align 4 dereferenceable(40) %agg.result, <16 x float> noundef [[M]]) // CHECK-NEXT: ret void return Bar(m); diff --git a/clang/test/CodeGenCXX/no-elide-constructors.cpp b/clang/test/CodeGenCXX/no-elide-constructors.cpp index 994282d..e56d7c6 100644 --- a/clang/test/CodeGenCXX/no-elide-constructors.cpp +++ b/clang/test/CodeGenCXX/no-elide-constructors.cpp @@ -27,7 +27,7 @@ X Test() // CHECK-CXX98: call void @_ZN1XC1ERKS_( // CHECK-CXX11: call void @_ZN1XC1EOS_( // CHECK-CXX11-NONZEROALLOCAAS: [[TMP0:%.*]] = addrspacecast ptr addrspace(5) [[AGG_RESULT]] to ptr - // CHECK-CXX11-NONZEROALLOCAAS-NEXT: call void @_ZN1XC1EOS_(ptr noundef nonnull align 1 dereferenceable(1) [[TMP0]] + // CHECK-CXX11-NONZEROALLOCAAS-NEXT: call void @_ZN1XC1EOS_(ptr noalias noundef nonnull align 1 dereferenceable(1) [[TMP0]] // CHECK-CXX98-ELIDE-NOT: call void @_ZN1XC1ERKS_( // CHECK-CXX11-ELIDE-NOT: call void @_ZN1XC1EOS_( // CHECK-CXX11-NONZEROALLOCAAS-ELIDE-NOT: call void @_ZN1XC1EOS_( diff --git a/clang/test/CodeGenCXX/pr13396.cpp b/clang/test/CodeGenCXX/pr13396.cpp index 37cb892..b62c871 100644 --- a/clang/test/CodeGenCXX/pr13396.cpp +++ b/clang/test/CodeGenCXX/pr13396.cpp @@ -7,8 +7,8 @@ struct foo { }; foo::foo() { - // CHECK-LABEL: define{{.*}} void @_ZN3fooC2Ev(ptr inreg noundef nonnull align 1 dereferenceable(1) %this) - // CHECK-LABEL: define{{.*}} void @_ZN3fooC1Ev(ptr inreg noundef nonnull align 1 dereferenceable(1) %this) + // CHECK-LABEL: define{{.*}} void @_ZN3fooC2Ev(ptr inreg noalias noundef nonnull align 1 dereferenceable(1) %this) + // CHECK-LABEL: define{{.*}} void @_ZN3fooC1Ev(ptr inreg noalias noundef nonnull align 1 dereferenceable(1) %this) } foo::~foo() { @@ -21,6 +21,6 @@ void dummy() { // older clangs accept: // template foo::foo(int x); foo x(10); - // CHECK-LABEL: define linkonce_odr void @_ZN3fooC1IiEET_(ptr inreg noundef nonnull align 1 dereferenceable(1) %this, i32 inreg noundef %x) - // CHECK-LABEL: define linkonce_odr void @_ZN3fooC2IiEET_(ptr inreg noundef nonnull align 1 dereferenceable(1) %this, i32 inreg noundef %x) + // CHECK-LABEL: define linkonce_odr void @_ZN3fooC1IiEET_(ptr inreg noalias noundef nonnull align 1 dereferenceable(1) %this, i32 inreg noundef %x) + // CHECK-LABEL: define linkonce_odr void @_ZN3fooC2IiEET_(ptr inreg noalias noundef nonnull align 1 dereferenceable(1) %this, i32 inreg noundef %x) } diff --git a/clang/test/CodeGenCXX/ptrauth-qualifier-struct.cpp b/clang/test/CodeGenCXX/ptrauth-qualifier-struct.cpp index 7d6de50..bd5232c 100644 --- a/clang/test/CodeGenCXX/ptrauth-qualifier-struct.cpp +++ b/clang/test/CodeGenCXX/ptrauth-qualifier-struct.cpp @@ -129,7 +129,7 @@ void testMoveAssignment(SI a) { t = static_cast<SI &&>(a); } -// CHECK: define linkonce_odr {{.*}}@_ZN2SAC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %[[THIS:.*]], ptr noundef nonnull align 8 dereferenceable(16) %0) +// CHECK: define linkonce_odr {{.*}}@_ZN2SAC2ERKS_(ptr noalias noundef nonnull align 8 dereferenceable(16) %[[THIS:.*]], ptr noundef nonnull align 8 dereferenceable(16) %0) // IOS: %[[RETVAL:.*]] = alloca ptr, align 8 // CHECK: %[[THIS_ADDR:.*]] = alloca ptr, align 8 // CHECK: %[[_ADDR:.*]] = alloca ptr, align 8 @@ -148,7 +148,7 @@ void testMoveAssignment(SI a) { // CHECK: %[[V8:.*]] = ptrtoint ptr %[[V2]] to i64 // CHECK: %[[V9:.*]] = call i64 @llvm.ptrauth.resign(i64 %[[V8]], i32 1, i64 %[[V4]], i32 1, i64 %[[V6]]) -// CHECK: define linkonce_odr {{.*}}@_ZN2SAC2EOS_(ptr noundef nonnull align 8 dereferenceable(16) %[[THIS:.*]], ptr noundef nonnull align 8 dereferenceable(16) %0) +// CHECK: define linkonce_odr {{.*}}@_ZN2SAC2EOS_(ptr noalias noundef nonnull align 8 dereferenceable(16) %[[THIS:.*]], ptr noundef nonnull align 8 dereferenceable(16) %0) // IOS: %[[RETVAL:.*]] = alloca ptr, align 8 // CHECK: %[[THIS_ADDR:.*]] = alloca ptr, align 8 // CHECK: %[[_ADDR:.*]] = alloca ptr, align 8 diff --git a/clang/test/CodeGenCXX/vtt-address-space.cpp b/clang/test/CodeGenCXX/vtt-address-space.cpp index 3409bc7..272f840 100644 --- a/clang/test/CodeGenCXX/vtt-address-space.cpp +++ b/clang/test/CodeGenCXX/vtt-address-space.cpp @@ -20,15 +20,15 @@ namespace Test { } // CHECK: linkonce_odr unnamed_addr addrspace(1) constant [13 x ptr addrspace(1)] [ptr addrspace(1) getelementptr inbounds inrange(-40, 0) ({ [5 x ptr addrspace(1)], [7 x ptr addrspace(1)], [4 x ptr addrspace(1)], [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTVN4Test1DE, i32 0, i32 0, i32 5), ptr addrspace(1) getelementptr inbounds inrange(-24, 0) ({ [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE0_NS_2C1E, i32 0, i32 0, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-24, 8) ({ [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE0_NS_2C1E, i32 0, i32 1, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-48, 8) ({ [7 x ptr addrspace(1)], [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE16_NS_2C2E, i32 0, i32 0, i32 6), ptr addrspace(1) getelementptr inbounds inrange(-48, 8) ({ [7 x ptr addrspace(1)], [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE16_NS_2C2E, i32 0, i32 0, i32 6), ptr addrspace(1) getelementptr inbounds inrange(-24, 0) ({ [7 x ptr addrspace(1)], [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE16_NS_2C2E, i32 0, i32 1, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-24, 8) ({ [7 x ptr addrspace(1)], [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE16_NS_2C2E, i32 0, i32 2, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-24, 8) ({ [5 x ptr addrspace(1)], [7 x ptr addrspace(1)], [4 x ptr addrspace(1)], [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTVN4Test1DE, i32 0, i32 2, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-48, 8) ({ [5 x ptr addrspace(1)], [7 x ptr addrspace(1)], [4 x ptr addrspace(1)], [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTVN4Test1DE, i32 0, i32 1, i32 6), ptr addrspace(1) getelementptr inbounds inrange(-48, 8) ({ [5 x ptr addrspace(1)], [7 x ptr addrspace(1)], [4 x ptr addrspace(1)], [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTVN4Test1DE, i32 0, i32 1, i32 6), ptr addrspace(1) getelementptr inbounds inrange(-24, 0) ({ [5 x ptr addrspace(1)], [7 x ptr addrspace(1)], [4 x ptr addrspace(1)], [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTVN4Test1DE, i32 0, i32 3, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-24, 0) ({ [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE64_NS_2V2E, i32 0, i32 0, i32 3), ptr addrspace(1) getelementptr inbounds inrange(-24, 8) ({ [3 x ptr addrspace(1)], [4 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTCN4Test1DE64_NS_2V2E, i32 0, i32 1, i32 3)], comdat, align 8 -// CHECK: call void @_ZN4Test2V2C2Ev(ptr noundef nonnull align 8 dereferenceable(20) %2, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 11)) -// CHECK: call void @_ZN4Test2C1C2Ev(ptr noundef nonnull align 8 dereferenceable(12) %this1, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 1)) -// CHECK: call void @_ZN4Test2C2C2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 3)) -// CHECK: define linkonce_odr void @_ZN4Test2V2C2Ev(ptr noundef nonnull align 8 dereferenceable(20) %this, ptr addrspace(1) noundef %vtt) -// CHECK: define linkonce_odr void @_ZN4Test2C1C2Ev(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr addrspace(1) noundef %vtt) -// CHECK: define linkonce_odr void @_ZN4Test2C2C2Ev(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr addrspace(1) noundef %vtt) -// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2V2C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(20) %2, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 11)) -// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2C1C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(12) %this1, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 1)) -// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2C2C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(12) %3, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 3)) -// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2V2C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(20) %this, ptr addrspace(1) noundef %vtt) -// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2C1C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(12) %this, ptr addrspace(1) noundef %vtt) -// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2C2C2Ev(ptr addrspace(4) noundef align 8 dereferenceable_or_null(12) %this, ptr addrspace(1) noundef %vtt) +// CHECK: call void @_ZN4Test2V2C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(20) %2, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 11)) +// CHECK: call void @_ZN4Test2C1C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(12) %this1, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 1)) +// CHECK: call void @_ZN4Test2C2C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(12) %3, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 3)) +// CHECK: define linkonce_odr void @_ZN4Test2V2C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(20) %this, ptr addrspace(1) noundef %vtt) +// CHECK: define linkonce_odr void @_ZN4Test2C1C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(12) %this, ptr addrspace(1) noundef %vtt) +// CHECK: define linkonce_odr void @_ZN4Test2C2C2Ev(ptr noalias noundef nonnull align 8 dereferenceable(12) %this, ptr addrspace(1) noundef %vtt) +// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2V2C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(20) %2, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 11)) +// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2C1C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(12) %this1, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 1)) +// WITH-NONZERO-DEFAULT-AS: call {{.*}} void @_ZN4Test2C2C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(12) %3, ptr addrspace(1) noundef getelementptr inbounds ([13 x ptr addrspace(1)], ptr addrspace(1) @_ZTTN4Test1DE, i64 0, i64 3)) +// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2V2C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(20) %this, ptr addrspace(1) noundef %vtt) +// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2C1C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(12) %this, ptr addrspace(1) noundef %vtt) +// WITH-NONZERO-DEFAULT-AS: define linkonce_odr {{.*}} void @_ZN4Test2C2C2Ev(ptr addrspace(4) noalias noundef align 8 dereferenceable_or_null(12) %this, ptr addrspace(1) noundef %vtt) diff --git a/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp b/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp index d71c2c5..6170c9f 100644 --- a/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp +++ b/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp @@ -45,7 +45,7 @@ coroutine ArrayInitCoro() { Printy("a"), // CHECK: store i1 true, ptr %cleanup.isactive.reload.addr, align 1 // CHECK-NEXT: store ptr %arr.reload.addr, ptr %arrayinit.endOfInit.reload.addr, align 8 - // CHECK-NEXT: call void @_ZN6PrintyC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %arr.reload.addr, ptr noundef @.str) + // CHECK-NEXT: call void @_ZN6PrintyC1EPKc(ptr noalias noundef nonnull align 8 dereferenceable(8) %arr.reload.addr, ptr noundef @.str) // CHECK-NEXT: %arrayinit.element = getelementptr inbounds %struct.Printy, ptr %arr.reload.addr, i64 1 // CHECK-NEXT: %arrayinit.element.spill.addr = getelementptr inbounds %_Z13ArrayInitCorov.Frame, ptr %0, i32 0, i32 10 // CHECK-NEXT: store ptr %arrayinit.element, ptr %arrayinit.element.spill.addr, align 8 diff --git a/clang/test/CodeGenHLSL/builtins/ByteAddressBuffers-constructors.hlsl b/clang/test/CodeGenHLSL/builtins/ByteAddressBuffers-constructors.hlsl index d7c4b03..82986c8 100644 --- a/clang/test/CodeGenHLSL/builtins/ByteAddressBuffers-constructors.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ByteAddressBuffers-constructors.hlsl @@ -29,11 +29,11 @@ export void foo() { // Buf1 initialization part 1 - global init function that calls ByteAddressBuffer C1 constructor with explicit binding // CHECK: define internal void @__cxx_global_var_init() // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl17ByteAddressBufferC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, +// CHECK-NEXT: call void @_ZN4hlsl17ByteAddressBufferC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, // CHECK-SAME: i32 noundef 1, i32 noundef 2, i32 noundef 1, i32 noundef 0) // Buf1 initialization part 2 - body of ByteAddressBuffer C1 constructor with explicit binding that calls the C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl17ByteAddressBufferC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl17ByteAddressBufferC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -51,7 +51,7 @@ export void foo() { // CHECK-NEXT: %1 = load i32, ptr %spaceNo.addr, align 4 // CHECK-NEXT: %2 = load i32, ptr %range.addr, align 4 // CHECK-NEXT: %3 = load i32, ptr %index.addr, align 4 -// CHECK: call void @_ZN4hlsl17ByteAddressBufferC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this1, +// CHECK: call void @_ZN4hlsl17ByteAddressBufferC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1, // CHECK-SAME: i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) // CHECK-NEXT: ret void @@ -59,28 +59,28 @@ export void foo() { // the global init function currently calls the default RWByteAddressBuffer C1 constructor // CHECK: define internal void @__cxx_global_var_init.1() // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl19RWByteAddressBufferC1Ev(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) +// CHECK-NEXT: call void @_ZN4hlsl19RWByteAddressBufferC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) // Buf3 initialization part 1 - local variable declared in function foo() is initialized by // RasterizerOrderedByteAddressBuffer C1 default constructor // CHECK: define void @_Z3foov() #2 { // CHECK-NEXT: entry: // CHECK-NEXT: %Buf3 = alloca %"class.hlsl::RasterizerOrderedByteAddressBuffer", align 4 -// CHECK-NEXT: call void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %Buf3) +// CHECK-NEXT: call void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %Buf3) // Buf3 initialization part 2 - body of RasterizerOrderedByteAddressBuffer default C1 constructor that // calls the default C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4 // CHECK-NEXT: %this1 = load ptr, ptr %this.addr, align 4 -// CHECK: call void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this1) +// CHECK: call void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1) // CHECK-NEXT: ret void // Buf1 initialization part 3 - ByteAddressBuffer C2 constructor with explicit binding that initializes // handle with @llvm.dx.resource.handlefrombinding -// CHECK: define linkonce_odr void @_ZN4hlsl17ByteAddressBufferC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl17ByteAddressBufferC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -106,7 +106,7 @@ export void foo() { // Buf3 initialization part 3 - body of RasterizerOrderedByteAddressBuffer default C2 constructor that // initializes handle to poison -// CHECK: define linkonce_odr void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl34RasterizerOrderedByteAddressBufferC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK: %__handle = getelementptr inbounds nuw %"class.hlsl::RasterizerOrderedByteAddressBuffer", ptr %this1, i32 0, i32 0 // CHECK: store target("dx.RawBuffer", i8, 1, 1) poison, ptr %__handle, align 4 diff --git a/clang/test/CodeGenHLSL/builtins/RWBuffer-constructor.hlsl b/clang/test/CodeGenHLSL/builtins/RWBuffer-constructor.hlsl index adf231d..1b5fc22 100644 --- a/clang/test/CodeGenHLSL/builtins/RWBuffer-constructor.hlsl +++ b/clang/test/CodeGenHLSL/builtins/RWBuffer-constructor.hlsl @@ -29,11 +29,11 @@ export void foo() { // Buf1 initialization part 1 - global init function that calls RWBuffer<float> C1 constructor with explicit binding // CHECK: define internal void @__cxx_global_var_init() // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIfEC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, +// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIfEC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, // CHECK-SAME: i32 noundef 5, i32 noundef 3, i32 noundef 1, i32 noundef 0) // Buf1 initialization part 2 - body of RWBuffer<float> C1 constructor with explicit binding that calls the C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIfEC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIfEC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -51,7 +51,7 @@ export void foo() { // CHECK-NEXT: %1 = load i32, ptr %spaceNo.addr, align 4 // CHECK-NEXT: %2 = load i32, ptr %range.addr, align 4 // CHECK-NEXT: %3 = load i32, ptr %index.addr, align 4 -// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIfEC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this1, +// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIfEC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1, // CHECK-SAME: i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) // CHECK-NEXT: ret void @@ -59,26 +59,26 @@ export void foo() { // the global init function currently calls the default RWBufer<double> C1 constructor // CHECK: define internal void @__cxx_global_var_init.1() #0 { // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIdEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) +// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIdEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) // Buf3 initialization part 1 - local variable declared in function foo() is initialized by RWBuffer<int> C1 default constructor // CHECK: define void @_Z3foov() // CHECK-NEXT: entry: // CHECK-NEXT: %Buf3 = alloca %"class.hlsl::RWBuffer.1", align 4 -// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIiEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %Buf3) +// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIiEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %Buf3) // Buf3 initialization part 2 - body of RWBuffer<int> default C1 constructor that calls the default C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIiEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIiEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4 // CHECK-NEXT: %this1 = load ptr, ptr %this.addr, align 4 -// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIiEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this1) +// CHECK-NEXT: call void @_ZN4hlsl8RWBufferIiEC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1) // CHECK-NEXT: ret void // Buf1 initialization part 3 - body of RWBuffer<float> C2 constructor with explicit binding that initializes // handle with @llvm.dx.resource.handlefrombinding -// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIfEC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIfEC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -103,7 +103,7 @@ export void foo() { // CHECK-NEXT: ret void // Buf3 initialization part 3 - body of RWBuffer<int> default C2 constructor that initializes handle to poison -// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIiEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIiEC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4 diff --git a/clang/test/CodeGenHLSL/builtins/StructuredBuffers-constructors.hlsl b/clang/test/CodeGenHLSL/builtins/StructuredBuffers-constructors.hlsl index ea818a7..f7d0712 100644 --- a/clang/test/CodeGenHLSL/builtins/StructuredBuffers-constructors.hlsl +++ b/clang/test/CodeGenHLSL/builtins/StructuredBuffers-constructors.hlsl @@ -29,12 +29,12 @@ export void foo() { // with explicit binding // CHECK: define internal void @__cxx_global_var_init() // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl16StructuredBufferIfEC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, +// CHECK-NEXT: call void @_ZN4hlsl16StructuredBufferIfEC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf1, // CHECK-SAME: i32 noundef 10, i32 noundef 2, i32 noundef 1, i32 noundef 0) // Buf1 initialization part 2 - body of StructuredBuffer<float> C1 constructor with explicit binding // that calls the C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl16StructuredBufferIfEC1Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl16StructuredBufferIfEC1Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -52,7 +52,7 @@ export void foo() { // CHECK-NEXT: %1 = load i32, ptr %spaceNo.addr, align 4 // CHECK-NEXT: %2 = load i32, ptr %range.addr, align 4 // CHECK-NEXT: %3 = load i32, ptr %index.addr, align 4 -// CHECK: call void @_ZN4hlsl16StructuredBufferIfEC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this1, +// CHECK: call void @_ZN4hlsl16StructuredBufferIfEC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1, // CHECK-SAME: i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) // CHECK-NEXT: ret void @@ -60,28 +60,28 @@ export void foo() { // the global init function currently calls the default RWStructuredBufer<double> C1 constructor // CHECK: define internal void @__cxx_global_var_init.1() // CHECK-NEXT: entry: -// CHECK-NEXT: call void @_ZN4hlsl18RWStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) +// CHECK-NEXT: call void @_ZN4hlsl18RWStructuredBufferIfEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) @_ZL4Buf2) // Buf3 initialization part 1 - local variable declared in function foo() is initialized by // AppendStructuredBuffer<float> C1 default constructor // CHECK: define void @_Z3foov() // CHECK-NEXT: entry: // CHECK-NEXT: %Buf3 = alloca %"class.hlsl::AppendStructuredBuffer", align 4 -// CHECK-NEXT: call void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %Buf3) +// CHECK-NEXT: call void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %Buf3) // Buf3 initialization part 2 - body of AppendStructuredBuffer<float> default C1 constructor that calls // the default C2 constructor -// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4 // CHECK-NEXT: %this1 = load ptr, ptr %this.addr, align 4 -// CHECK: call void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this1) +// CHECK: call void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this1) // CHECK-NEXT: ret void // Buf1 initialization part 3 - body of AppendStructuredBuffer<float> C2 constructor with explicit binding // that initializes handle with @llvm.dx.resource.handlefrombinding -// CHECK: define linkonce_odr void @_ZN4hlsl16StructuredBufferIfEC2Ejjij(ptr noundef nonnull align 4 dereferenceable(4) %this, +// CHECK: define linkonce_odr void @_ZN4hlsl16StructuredBufferIfEC2Ejjij(ptr noalias noundef nonnull align 4 dereferenceable(4) %this, // CHECK-SAME: i32 noundef %registerNo, i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 @@ -107,7 +107,7 @@ export void foo() { // Buf3 initialization part 3 - body of AppendStructuredBuffer<float> default C2 constructor that // initializes handle to poison -// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this) +// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noalias noundef nonnull align 4 dereferenceable(4) %this) // CHECK-NEXT: entry: // CHECK-NEXT: %this.addr = alloca ptr, align 4 // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4 diff --git a/clang/test/OpenMP/target_in_reduction_codegen.cpp b/clang/test/OpenMP/target_in_reduction_codegen.cpp index 6573e15..80cb92c 100644 --- a/clang/test/OpenMP/target_in_reduction_codegen.cpp +++ b/clang/test/OpenMP/target_in_reduction_codegen.cpp @@ -58,7 +58,7 @@ int main(int argc, char **argv) { // CHECK1-NEXT: br label [[ARRAYCTOR_LOOP:%.*]] // CHECK1: arrayctor.loop: // CHECK1-NEXT: [[ARRAYCTOR_CUR:%.*]] = phi ptr [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[ARRAYCTOR_NEXT:%.*]], [[ARRAYCTOR_LOOP]] ] -// CHECK1-NEXT: call void @_ZN1SC1Ev(ptr nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]]) +// CHECK1-NEXT: call void @_ZN1SC1Ev(ptr noalias nonnull align 4 dereferenceable(4) [[ARRAYCTOR_CUR]]) // CHECK1-NEXT: [[ARRAYCTOR_NEXT]] = getelementptr inbounds [[STRUCT_S]], ptr [[ARRAYCTOR_CUR]], i64 1 // CHECK1-NEXT: [[ARRAYCTOR_DONE:%.*]] = icmp eq ptr [[ARRAYCTOR_NEXT]], [[ARRAYCTOR_END]] // CHECK1-NEXT: br i1 [[ARRAYCTOR_DONE]], label [[ARRAYCTOR_CONT:%.*]], label [[ARRAYCTOR_LOOP]] @@ -178,7 +178,7 @@ int main(int argc, char **argv) { // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 // CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 -// CHECK1-NEXT: call void @_ZN1SC2Ev(ptr nonnull align 4 dereferenceable(4) [[THIS1]]) +// CHECK1-NEXT: call void @_ZN1SC2Ev(ptr noalias nonnull align 4 dereferenceable(4) [[THIS1]]) // CHECK1-NEXT: ret void // // @@ -280,7 +280,7 @@ int main(int argc, char **argv) { // CHECK1-NEXT: br i1 [[OMP_ARRAYINIT_ISEMPTY]], label [[OMP_ARRAYINIT_DONE:%.*]], label [[OMP_ARRAYINIT_BODY:%.*]] // CHECK1: omp.arrayinit.body: // CHECK1-NEXT: [[OMP_ARRAYCPY_DESTELEMENTPAST:%.*]] = phi ptr [ [[ARRAY_BEGIN]], [[ENTRY:%.*]] ], [ [[OMP_ARRAYCPY_DEST_ELEMENT:%.*]], [[OMP_ARRAYINIT_BODY]] ] -// CHECK1-NEXT: call void @_ZN1SC1Ev(ptr nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]]) +// CHECK1-NEXT: call void @_ZN1SC1Ev(ptr noalias nonnull align 4 dereferenceable(4) [[OMP_ARRAYCPY_DESTELEMENTPAST]]) // CHECK1-NEXT: [[OMP_ARRAYCPY_DEST_ELEMENT]] = getelementptr [[STRUCT_S]], ptr [[OMP_ARRAYCPY_DESTELEMENTPAST]], i32 1 // CHECK1-NEXT: [[OMP_ARRAYCPY_DONE:%.*]] = icmp eq ptr [[OMP_ARRAYCPY_DEST_ELEMENT]], [[TMP4]] // CHECK1-NEXT: br i1 [[OMP_ARRAYCPY_DONE]], label [[OMP_ARRAYINIT_DONE]], label [[OMP_ARRAYINIT_BODY]] @@ -354,7 +354,7 @@ int main(int argc, char **argv) { // CHECK1-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 // CHECK1-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 // CHECK1-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A_ADDR]], align 8 -// CHECK1-NEXT: call void @_ZN1SC1ERKS_(ptr nonnull align 4 dereferenceable(4) [[AGG_RESULT]], ptr nonnull align 4 dereferenceable(4) [[TMP1]]) +// CHECK1-NEXT: call void @_ZN1SC1ERKS_(ptr noalias nonnull align 4 dereferenceable(4) [[AGG_RESULT]], ptr nonnull align 4 dereferenceable(4) [[TMP1]]) // CHECK1-NEXT: ret void // // @@ -606,7 +606,7 @@ int main(int argc, char **argv) { // CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8 // CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK1-NEXT: [[TMP1:%.*]] = load ptr, ptr [[DOTADDR]], align 8 -// CHECK1-NEXT: call void @_ZN1SC2ERKS_(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP1]]) +// CHECK1-NEXT: call void @_ZN1SC2ERKS_(ptr noalias nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP1]]) // CHECK1-NEXT: ret void // // diff --git a/clang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp.expected b/clang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp.expected index 96370b4..63df793 100644 --- a/clang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp.expected +++ b/clang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp.expected @@ -31,7 +31,7 @@ int main() { return static_noinline_fn(0); } // CHECK-LABEL: define dso_local void @_ZN3FooC2Ei( -// CHECK-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { +// CHECK-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -45,7 +45,7 @@ int main() { // // // CHECK-LABEL: define dso_local void @_ZN3FooC1Ei( -// CHECK-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { +// CHECK-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -53,7 +53,7 @@ int main() { // CHECK-NEXT: store i32 [[X]], ptr [[X_ADDR]], align 4 // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[X_ADDR]], align 4 -// CHECK-NEXT: call void @_ZN3FooC2Ei(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) +// CHECK-NEXT: call void @_ZN3FooC2Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) // CHECK-NEXT: ret void // // @@ -82,7 +82,7 @@ int main() { // CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4 // CHECK-NEXT: [[F:%.*]] = alloca [[CLASS_FOO:%.*]], align 4 // CHECK-NEXT: store i32 0, ptr [[RETVAL]], align 4 -// CHECK-NEXT: call void @_ZN3FooC1Ei(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) +// CHECK-NEXT: call void @_ZN3FooC1Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) // CHECK-NEXT: [[CALL:%.*]] = call noundef i32 @_ZNK3Foo23function_defined_inlineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 2) // CHECK-NEXT: [[CALL1:%.*]] = call noundef i32 @_ZNK3Foo28function_defined_out_of_lineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 3) // CHECK-NEXT: [[CALL2:%.*]] = call noundef i32 @_ZL18static_noinline_fni(i32 noundef 0) @@ -132,7 +132,7 @@ int main() { // // // MACHO-LABEL: define void @_ZN3FooC2Ei( -// MACHO-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { +// MACHO-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { // MACHO-NEXT: [[ENTRY:.*:]] // MACHO-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // MACHO-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -146,7 +146,7 @@ int main() { // // // MACHO-LABEL: define void @_ZN3FooC1Ei( -// MACHO-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { +// MACHO-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { // MACHO-NEXT: [[ENTRY:.*:]] // MACHO-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // MACHO-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -154,7 +154,7 @@ int main() { // MACHO-NEXT: store i32 [[X]], ptr [[X_ADDR]], align 4 // MACHO-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // MACHO-NEXT: [[TMP0:%.*]] = load i32, ptr [[X_ADDR]], align 4 -// MACHO-NEXT: call void @_ZN3FooC2Ei(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) +// MACHO-NEXT: call void @_ZN3FooC2Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) // MACHO-NEXT: ret void // // @@ -183,7 +183,7 @@ int main() { // MACHO-NEXT: [[RETVAL:%.*]] = alloca i32, align 4 // MACHO-NEXT: [[F:%.*]] = alloca [[CLASS_FOO:%.*]], align 4 // MACHO-NEXT: store i32 0, ptr [[RETVAL]], align 4 -// MACHO-NEXT: call void @_ZN3FooC1Ei(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) +// MACHO-NEXT: call void @_ZN3FooC1Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) // MACHO-NEXT: [[CALL:%.*]] = call noundef i32 @_ZNK3Foo23function_defined_inlineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 2) // MACHO-NEXT: [[CALL1:%.*]] = call noundef i32 @_ZNK3Foo28function_defined_out_of_lineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 3) // MACHO-NEXT: [[CALL2:%.*]] = call noundef i32 @_ZL18static_noinline_fni(i32 noundef 0) @@ -238,7 +238,7 @@ int main() { // MSVC-NEXT: [[RETVAL:%.*]] = alloca i32, align 4 // MSVC-NEXT: [[F:%.*]] = alloca [[CLASS_FOO:%.*]], align 4 // MSVC-NEXT: store i32 0, ptr [[RETVAL]], align 4 -// MSVC-NEXT: [[CALL:%.*]] = call noundef ptr @"??0Foo@@QEAA@H@Z"(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) +// MSVC-NEXT: [[CALL:%.*]] = call noundef ptr @"??0Foo@@QEAA@H@Z"(ptr noalias noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) // MSVC-NEXT: [[CALL1:%.*]] = call noundef i32 @"?function_defined_inline@Foo@@QEBAHH@Z"(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 2) // MSVC-NEXT: [[CALL2:%.*]] = call noundef i32 @"?function_defined_out_of_line@Foo@@QEBAHH@Z"(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 3) // MSVC-NEXT: [[CALL3:%.*]] = call noundef i32 @"?static_noinline_fn@@YAHH@Z"(i32 noundef 0) @@ -249,7 +249,7 @@ int main() { // // // MINGW-LABEL: define dso_local void @_ZN3FooC2Ei( -// MINGW-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { +// MINGW-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { // MINGW-NEXT: [[ENTRY:.*:]] // MINGW-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // MINGW-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -263,7 +263,7 @@ int main() { // // // MINGW-LABEL: define dso_local void @_ZN3FooC1Ei( -// MINGW-SAME: ptr noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { +// MINGW-SAME: ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS:%.*]], i32 noundef [[X:%.*]]) unnamed_addr #[[ATTR0]] align 2 { // MINGW-NEXT: [[ENTRY:.*:]] // MINGW-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 // MINGW-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4 @@ -271,7 +271,7 @@ int main() { // MINGW-NEXT: store i32 [[X]], ptr [[X_ADDR]], align 4 // MINGW-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // MINGW-NEXT: [[TMP0:%.*]] = load i32, ptr [[X_ADDR]], align 4 -// MINGW-NEXT: call void @_ZN3FooC2Ei(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) +// MINGW-NEXT: call void @_ZN3FooC2Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) // MINGW-NEXT: ret void // // @@ -300,7 +300,7 @@ int main() { // MINGW-NEXT: [[RETVAL:%.*]] = alloca i32, align 4 // MINGW-NEXT: [[F:%.*]] = alloca [[CLASS_FOO:%.*]], align 4 // MINGW-NEXT: store i32 0, ptr [[RETVAL]], align 4 -// MINGW-NEXT: call void @_ZN3FooC1Ei(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) +// MINGW-NEXT: call void @_ZN3FooC1Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1) // MINGW-NEXT: [[CALL:%.*]] = call noundef i32 @_ZNK3Foo23function_defined_inlineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 2) // MINGW-NEXT: [[CALL1:%.*]] = call noundef i32 @_ZNK3Foo28function_defined_out_of_lineEi(ptr noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 3) // MINGW-NEXT: [[CALL2:%.*]] = call noundef i32 @_ZL18static_noinline_fni(i32 noundef 0) diff --git a/clang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp.expected b/clang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp.expected index 2ed8693..cdbb844 100644 --- a/clang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp.expected +++ b/clang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp.expected @@ -44,7 +44,7 @@ public: // CHECK-NEXT: store i8 [[X:%.*]], ptr [[X_ADDR]], align 1 // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[X_ADDR]], align 1 -// CHECK-NEXT: call void @_ZN3FooIcEC2Ec(ptr noundef nonnull align 1 dereferenceable(1) [[THIS1]], i8 noundef signext [[TMP0]]) +// CHECK-NEXT: call void @_ZN3FooIcEC2Ec(ptr noalias noundef nonnull align 1 dereferenceable(1) [[THIS1]], i8 noundef signext [[TMP0]]) // CHECK-NEXT: ret void // // CHECK-LABEL: @_ZN3FooIcED1Ev( @@ -86,7 +86,7 @@ template struct Foo<char>; // CHECK-NEXT: store i16 [[X:%.*]], ptr [[X_ADDR]], align 2 // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP0:%.*]] = load i16, ptr [[X_ADDR]], align 2 -// CHECK-NEXT: call void @_ZN3FooIsEC2Es(ptr noundef nonnull align 2 dereferenceable(2) [[THIS1]], i16 noundef signext [[TMP0]]) +// CHECK-NEXT: call void @_ZN3FooIsEC2Es(ptr noalias noundef nonnull align 2 dereferenceable(2) [[THIS1]], i16 noundef signext [[TMP0]]) // CHECK-NEXT: ret void // // CHECK-LABEL: @_ZN3FooIsED1Ev( @@ -131,7 +131,7 @@ template struct Foo<short>; // CHECK-NEXT: store i32 [[X:%.*]], ptr [[X_ADDR]], align 4 // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[X_ADDR]], align 4 -// CHECK-NEXT: call void @_ZN3BarIiEC2Ei(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) +// CHECK-NEXT: call void @_ZN3BarIiEC2Ei(ptr noalias noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]]) // CHECK-NEXT: ret void // // CHECK-LABEL: @_ZN3BarIiED1Ev( @@ -176,7 +176,7 @@ template struct Bar<int>; // CHECK-NEXT: store i64 [[X:%.*]], ptr [[X_ADDR]], align 8 // CHECK-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 // CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr [[X_ADDR]], align 8 -// CHECK-NEXT: call void @_ZN3BazIlEC2El(ptr noundef nonnull align 8 dereferenceable(8) [[THIS1]], i64 noundef [[TMP0]]) +// CHECK-NEXT: call void @_ZN3BazIlEC2El(ptr noalias noundef nonnull align 8 dereferenceable(8) [[THIS1]], i64 noundef [[TMP0]]) // CHECK-NEXT: ret void // // CHECK-LABEL: @_ZN3BazIlED1Ev( |