mirror of https://github.com/microsoft/clang.git
Adjust clang side tests effected by 239795 before reapplying said change
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239848 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
359dccdfd3
commit
bfeebd81de
|
@ -6,31 +6,31 @@ unsigned long gl;
|
|||
void test_store_m(unsigned int i) {
|
||||
asm("st %1, %0" : "=m" (gi) : "r" (i));
|
||||
// CHECK-LABEL: define void @test_store_m(i32 zeroext %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*m,r"(i32* @gi, i32 %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*m,r"(i32* nonnull @gi, i32 %i)
|
||||
}
|
||||
|
||||
void test_store_Q(unsigned int i) {
|
||||
asm("st %1, %0" : "=Q" (gi) : "r" (i));
|
||||
// CHECK-LABEL: define void @test_store_Q(i32 zeroext %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*Q,r"(i32* @gi, i32 %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*Q,r"(i32* nonnull @gi, i32 %i)
|
||||
}
|
||||
|
||||
void test_store_R(unsigned int i) {
|
||||
asm("st %1, %0" : "=R" (gi) : "r" (i));
|
||||
// CHECK-LABEL: define void @test_store_R(i32 zeroext %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*R,r"(i32* @gi, i32 %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*R,r"(i32* nonnull @gi, i32 %i)
|
||||
}
|
||||
|
||||
void test_store_S(unsigned int i) {
|
||||
asm("st %1, %0" : "=S" (gi) : "r" (i));
|
||||
// CHECK-LABEL: define void @test_store_S(i32 zeroext %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*S,r"(i32* @gi, i32 %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*S,r"(i32* nonnull @gi, i32 %i)
|
||||
}
|
||||
|
||||
void test_store_T(unsigned int i) {
|
||||
asm("st %1, %0" : "=T" (gi) : "r" (i));
|
||||
// CHECK-LABEL: define void @test_store_T(i32 zeroext %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*T,r"(i32* @gi, i32 %i)
|
||||
// CHECK: call void asm "st $1, $0", "=*T,r"(i32* nonnull @gi, i32 %i)
|
||||
}
|
||||
|
||||
int test_load_m() {
|
||||
|
@ -38,7 +38,7 @@ int test_load_m() {
|
|||
asm("l %0, %1" : "=r" (i) : "m" (gi));
|
||||
return i;
|
||||
// CHECK-LABEL: define signext i32 @test_load_m()
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*m"(i32* @gi)
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*m"(i32* nonnull @gi)
|
||||
}
|
||||
|
||||
int test_load_Q() {
|
||||
|
@ -46,7 +46,7 @@ int test_load_Q() {
|
|||
asm("l %0, %1" : "=r" (i) : "Q" (gi));
|
||||
return i;
|
||||
// CHECK-LABEL: define signext i32 @test_load_Q()
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*Q"(i32* @gi)
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*Q"(i32* nonnull @gi)
|
||||
}
|
||||
|
||||
int test_load_R() {
|
||||
|
@ -54,7 +54,7 @@ int test_load_R() {
|
|||
asm("l %0, %1" : "=r" (i) : "R" (gi));
|
||||
return i;
|
||||
// CHECK-LABEL: define signext i32 @test_load_R()
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*R"(i32* @gi)
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*R"(i32* nonnull @gi)
|
||||
}
|
||||
|
||||
int test_load_S() {
|
||||
|
@ -62,7 +62,7 @@ int test_load_S() {
|
|||
asm("l %0, %1" : "=r" (i) : "S" (gi));
|
||||
return i;
|
||||
// CHECK-LABEL: define signext i32 @test_load_S()
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*S"(i32* @gi)
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*S"(i32* nonnull @gi)
|
||||
}
|
||||
|
||||
int test_load_T() {
|
||||
|
@ -70,7 +70,7 @@ int test_load_T() {
|
|||
asm("l %0, %1" : "=r" (i) : "T" (gi));
|
||||
return i;
|
||||
// CHECK-LABEL: define signext i32 @test_load_T()
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*T"(i32* @gi)
|
||||
// CHECK: call i32 asm "l $0, $1", "=r,*T"(i32* nonnull @gi)
|
||||
}
|
||||
|
||||
void test_mI(unsigned char *c) {
|
||||
|
|
|
@ -65,15 +65,15 @@ namespace PR18097 {
|
|||
};
|
||||
|
||||
// CHECK-LABEL: define {{.*}} @__cxx_global_var_init
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* @_ZN7PR180977dynamic1aE, i32 1)
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* nonnull @_ZN7PR180977dynamic1aE, i32 1)
|
||||
_Atomic(X) a = X(1);
|
||||
|
||||
// CHECK-LABEL: define {{.*}} @__cxx_global_var_init
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* @_ZN7PR180977dynamic1bE, i32 2)
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* nonnull @_ZN7PR180977dynamic1bE, i32 2)
|
||||
_Atomic(X) b(X(2));
|
||||
|
||||
// CHECK-LABEL: define {{.*}} @__cxx_global_var_init
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* @_ZN7PR180977dynamic1cE, i32 3)
|
||||
// CHECK: call void @_ZN7PR180977dynamic1XC1Ei({{.*}}* nonnull @_ZN7PR180977dynamic1cE, i32 3)
|
||||
_Atomic(X) c{X(3)};
|
||||
|
||||
struct Y {
|
||||
|
|
|
@ -41,13 +41,13 @@ void e() {
|
|||
static const A a = A();
|
||||
}
|
||||
|
||||
// CHECK: call void @_ZN1AC1Ev({{.*}}* @a)
|
||||
// CHECK: call void @_ZN1AC1Ev({{.*}}* nonnull @a)
|
||||
// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @a to i8*))
|
||||
|
||||
// CHECK: call void @_ZN1BC1Ev({{.*}}* @b)
|
||||
// CHECK: call void @_ZN1BC1Ev({{.*}}* nonnull @b)
|
||||
// CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @b to i8*))
|
||||
|
||||
// CHECK: call void @_ZN1CC1Ev({{.*}}* @c)
|
||||
// CHECK: call void @_ZN1CC1Ev({{.*}}* nonnull @c)
|
||||
// CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @c to i8*))
|
||||
|
||||
// CHECK: call i32 @_Z1fv(
|
||||
|
@ -55,6 +55,6 @@ void e() {
|
|||
// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @d to i8*))
|
||||
|
||||
// CHECK-LABEL: define void @_Z1ev(
|
||||
// CHECK: call void @_ZN1AC1Ev(%struct.A* @_ZZ1evE1a)
|
||||
// CHECK: call void @_ZN1AC1Ev(%struct.A* nonnull @_ZZ1evE1a)
|
||||
// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @_ZZ1evE1a to i8*))
|
||||
// CHECK-NOT: llvm.invariant.end
|
||||
|
|
|
@ -178,9 +178,9 @@ X test6() {
|
|||
// CHECK: [[A:%.*]] = alloca [[X:%.*]], align 8
|
||||
// CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds %class.X, %class.X* [[A]], i32 0, i32 0
|
||||
// CHECK-NEXT: call void @llvm.lifetime.start(i64 1, i8* [[PTR]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XC1Ev([[X]]* [[A]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XC1ERKS_([[X]]* {{%.*}}, [[X]]* dereferenceable({{[0-9]+}}) [[A]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XD1Ev([[X]]* [[A]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XC1Ev([[X]]* nonnull [[A]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XC1ERKS_([[X]]* {{%.*}}, [[X]]* nonnull dereferenceable({{[0-9]+}}) [[A]])
|
||||
// CHECK-NEXT: call {{.*}} @_ZN1XD1Ev([[X]]* nonnull [[A]])
|
||||
// CHECK-NEXT: call void @llvm.lifetime.end(i64 1, i8* [[PTR]])
|
||||
// CHECK-NEXT: ret void
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@ int large_combiner_test(S_large s) {
|
|||
// CHECK-LABEL: define i32 @large_combiner_test
|
||||
// CHECK: [[T1:%.*]] = alloca %struct.Combiner
|
||||
// CHECK: [[T2:%.*]] = alloca %struct.Combiner
|
||||
// CHECK: [[T3:%.*]] = call %struct.Combiner* @_ZN8CombinerC1E7S_large(%struct.Combiner* [[T1]], [9 x i32] %s.coerce)
|
||||
// CHECK: call void @_ZN8Combiner1fEv(%struct.Combiner* sret [[T2]], %struct.Combiner* [[T1]])
|
||||
// CHECK: [[T3:%.*]] = call %struct.Combiner* @_ZN8CombinerC1E7S_large(%struct.Combiner* nonnull [[T1]], [9 x i32] %s.coerce)
|
||||
// CHECK: call void @_ZN8Combiner1fEv(%struct.Combiner* nonnull sret [[T2]], %struct.Combiner* nonnull [[T1]])
|
||||
// CHECK: [[T4:%.*]] = getelementptr inbounds %struct.Combiner, %struct.Combiner* [[T2]], i32 0, i32 0, i32 0, i32 0
|
||||
// CHECK: [[T5:%.*]] = load i32, i32* [[T4]]
|
||||
// CHECK: ret i32 [[T5]]
|
||||
|
|
|
@ -55,14 +55,14 @@ int f2() {
|
|||
@try {
|
||||
// CHECK: store i32 6, i32* [[X]]
|
||||
x++;
|
||||
// CHECK-NEXT: call void asm sideeffect "", "*m,*m"(i32* [[X]]
|
||||
// CHECK-NEXT: call void asm sideeffect "", "*m,*m"(i32* nonnull [[X]]
|
||||
// CHECK-NEXT: call void @foo()
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit
|
||||
// CHECK-NEXT: [[T:%.*]] = load i32, i32* [[X]]
|
||||
foo();
|
||||
} @catch (id) {
|
||||
// Landing pad. Note that we elide the re-enter.
|
||||
// CHECK: call void asm sideeffect "", "=*m,=*m"(i32* [[X]]
|
||||
// CHECK: call void asm sideeffect "", "=*m,=*m"(i32* nonnull [[X]]
|
||||
// CHECK-NEXT: call i8* @objc_exception_extract
|
||||
// CHECK-NEXT: [[T1:%.*]] = load i32, i32* [[X]]
|
||||
// CHECK-NEXT: [[T2:%.*]] = add nsw i32 [[T1]], -1
|
||||
|
@ -93,7 +93,7 @@ void f3() {
|
|||
// CHECK-NEXT: br i1
|
||||
|
||||
@try {
|
||||
// CHECK: call void @f3_helper(i32 0, i32* [[X]])
|
||||
// CHECK: call void @f3_helper(i32 0, i32* nonnull [[X]])
|
||||
// CHECK: call void @objc_exception_try_exit(
|
||||
f3_helper(0, &x);
|
||||
} @finally {
|
||||
|
@ -101,12 +101,12 @@ void f3() {
|
|||
// CHECK: call void @objc_exception_try_enter
|
||||
// CHECK: call i32 @_setjmp
|
||||
@try {
|
||||
// CHECK: call void @f3_helper(i32 1, i32* [[X]])
|
||||
// CHECK: call void @f3_helper(i32 1, i32* nonnull [[X]])
|
||||
// CHECK: call void @objc_exception_try_exit(
|
||||
f3_helper(1, &x);
|
||||
} @finally {
|
||||
// CHECK: [[DEST2:%.*]] = phi i32 [ 0, {{%.*}} ], [ 5, {{%.*}} ]
|
||||
// CHECK: call void @f3_helper(i32 2, i32* [[X]])
|
||||
// CHECK: call void @f3_helper(i32 2, i32* nonnull [[X]])
|
||||
f3_helper(2, &x);
|
||||
|
||||
// This loop is large enough to dissuade the optimizer from just
|
||||
|
@ -123,7 +123,7 @@ void f3() {
|
|||
// CHECK: [[DEST1]]
|
||||
}
|
||||
|
||||
// CHECK: call void @f3_helper(i32 4, i32* [[X]])
|
||||
// CHECK: call void @f3_helper(i32 4, i32* nonnull [[X]])
|
||||
// CHECK-NEXT: call void @llvm.lifetime.end(i64 4, i8* [[XPTR]])
|
||||
// CHECK-NEXT: ret void
|
||||
f3_helper(4, &x);
|
||||
|
@ -135,7 +135,7 @@ void f4() {
|
|||
|
||||
// CHECK-LABEL: define void @f4()
|
||||
// CHECK: [[EXNDATA:%.*]] = alloca [[EXNDATA_T:%.*]], align
|
||||
// CHECK: call void @objc_exception_try_enter([[EXNDATA_T]]* [[EXNDATA]])
|
||||
// CHECK: call void @objc_exception_try_enter([[EXNDATA_T]]* nonnull [[EXNDATA]])
|
||||
// CHECK: call i32 @_setjmp
|
||||
@try {
|
||||
// CHECK: call void @f4_help(i32 0)
|
||||
|
@ -144,7 +144,7 @@ void f4() {
|
|||
// The finally cleanup has two threaded entrypoints after optimization:
|
||||
|
||||
// finally.no-call-exit: Predecessor is when the catch throws.
|
||||
// CHECK: call i8* @objc_exception_extract([[EXNDATA_T]]* [[EXNDATA]])
|
||||
// CHECK: call i8* @objc_exception_extract([[EXNDATA_T]]* nonnull [[EXNDATA]])
|
||||
// CHECK-NEXT: call void @f4_help(i32 2)
|
||||
// CHECK-NEXT: br label
|
||||
// -> rethrow
|
||||
|
@ -154,7 +154,7 @@ void f4() {
|
|||
// to rethrow and should be true only in the last case.
|
||||
// CHECK: phi i8*
|
||||
// CHECK-NEXT: phi i1
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[EXNDATA_T]]* [[EXNDATA]])
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[EXNDATA_T]]* nonnull [[EXNDATA]])
|
||||
// CHECK-NEXT: call void @f4_help(i32 2)
|
||||
// CHECK-NEXT: br i1
|
||||
// -> ret, rethrow
|
||||
|
@ -163,8 +163,8 @@ void f4() {
|
|||
// CHECK: ret void
|
||||
|
||||
// Catch mechanism:
|
||||
// CHECK: call i8* @objc_exception_extract([[EXNDATA_T]]* [[EXNDATA]])
|
||||
// CHECK-NEXT: call void @objc_exception_try_enter([[EXNDATA_T]]* [[EXNDATA]])
|
||||
// CHECK: call i8* @objc_exception_extract([[EXNDATA_T]]* nonnull [[EXNDATA]])
|
||||
// CHECK-NEXT: call void @objc_exception_try_enter([[EXNDATA_T]]* nonnull [[EXNDATA]])
|
||||
// CHECK: call i32 @_setjmp
|
||||
// -> next, finally.no-call-exit
|
||||
// CHECK: call i32 @objc_exception_match
|
||||
|
|
|
@ -32,7 +32,7 @@ void foo(id a) {
|
|||
// CHECK: call i32 @_setjmp
|
||||
@synchronized(a) {
|
||||
// This is unreachable, but the optimizers can't know that.
|
||||
// CHECK: call void asm sideeffect "", "=*m,=*m,=*m"(i8** [[A]], i8** [[SYNC]]
|
||||
// CHECK: call void asm sideeffect "", "=*m,=*m,=*m"(i8** nonnull [[A]], i8** nonnull [[SYNC]]
|
||||
// CHECK: call i32 @objc_sync_exit
|
||||
// CHECK: call i8* @objc_exception_extract
|
||||
// CHECK: call void @objc_exception_throw
|
||||
|
|
|
@ -15,7 +15,7 @@ void test0(id obj) {
|
|||
// CHECK-LABEL: define void @_Z5test0P11objc_object(
|
||||
// Enter the @synchronized block.
|
||||
// CHECK: call i32 @objc_sync_enter(i8* [[OBJ:%.*]])
|
||||
// CHECK: call void @objc_exception_try_enter([[BUF_T:%.*]]* [[BUF:%.*]])
|
||||
// CHECK: call void @objc_exception_try_enter([[BUF_T:%.*]]* nonnull [[BUF:%.*]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = getelementptr [[BUF_T]], [[BUF_T]]* [[BUF]], i32 0, i32 0, i32 0
|
||||
// CHECK-NEXT: [[T1:%.*]] = call i32 @_setjmp(i32* [[T0]])
|
||||
// CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
|
||||
|
@ -25,7 +25,7 @@ void test0(id obj) {
|
|||
// CHECK: invoke void @_Z3foov()
|
||||
|
||||
// Leave the @synchronized. The reload of obj here is unnecessary.
|
||||
// CHECK: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
|
||||
// CHECK: call void @objc_exception_try_exit([[BUF_T]]* nonnull [[BUF]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8**
|
||||
// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
|
||||
// CHECK-NEXT: ret void
|
||||
|
@ -33,7 +33,7 @@ void test0(id obj) {
|
|||
// Real EH cleanup.
|
||||
// CHECK: [[T0:%.*]] = landingpad
|
||||
// CHECK-NEXT: cleanup
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* nonnull [[BUF]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8**
|
||||
// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
|
||||
// CHECK-NEXT: resume
|
||||
|
@ -41,7 +41,7 @@ void test0(id obj) {
|
|||
// ObjC EH "cleanup".
|
||||
// CHECK: [[T0:%.*]] = load i8*, i8**
|
||||
// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_exception_extract([[BUF_T]]* [[BUF]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_exception_extract([[BUF_T]]* nonnull [[BUF]])
|
||||
// CHECK-NEXT: call void @objc_exception_throw(i8* [[T0]])
|
||||
// CHECK-NEXT: unreachable
|
||||
|
||||
|
@ -54,7 +54,7 @@ void test1(id obj, bool *failed) {
|
|||
}
|
||||
// CHECK-LABEL: define void @_Z5test1P11objc_objectPb(
|
||||
// Enter the @try block.
|
||||
// CHECK: call void @objc_exception_try_enter([[BUF_T]]* [[BUF:%.*]])
|
||||
// CHECK: call void @objc_exception_try_enter([[BUF_T]]* nonnull [[BUF:%.*]])
|
||||
// CHECK-NEXT: [[T0:%.*]] = getelementptr [[BUF_T]], [[BUF_T]]* [[BUF]], i32 0, i32 0, i32 0
|
||||
// CHECK-NEXT: [[T1:%.*]] = call i32 @_setjmp(i32* [[T0]])
|
||||
// CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
|
||||
|
@ -64,14 +64,14 @@ void test1(id obj, bool *failed) {
|
|||
// CHECK: invoke void @_Z3foov()
|
||||
|
||||
// Leave the @try.
|
||||
// CHECK: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
|
||||
// CHECK: call void @objc_exception_try_exit([[BUF_T]]* nonnull [[BUF]])
|
||||
// CHECK-NEXT: br label
|
||||
// CHECK: ret void
|
||||
|
||||
// Real EH cleanup.
|
||||
// CHECK: [[T0:%.*]] = landingpad
|
||||
// CHECK-NEXT: cleanup
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
|
||||
// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* nonnull [[BUF]])
|
||||
// CHECK-NEXT: resume
|
||||
|
||||
// Catch handler. Reload of 'failed' address is unnecessary.
|
||||
|
|
Loading…
Reference in New Issue