summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX
diff options
context:
space:
mode:
authorArnaud A. de Grandmaison <arnaud.degrandmaison@arm.com>2014-10-08 14:04:26 +0000
committerArnaud A. de Grandmaison <arnaud.degrandmaison@arm.com>2014-10-08 14:04:26 +0000
commite69ec55cda95e5f6aa71ed5c0a38dbb6504a23bb (patch)
treefd01977e1797e32dda5bb07ee674634b9f38224d /clang/test/CodeGenCXX
parent4a5bb772c362afeb3586b84edc3c2d0eeae31327 (diff)
downloadbcm5719-llvm-e69ec55cda95e5f6aa71ed5c0a38dbb6504a23bb.tar.gz
bcm5719-llvm-e69ec55cda95e5f6aa71ed5c0a38dbb6504a23bb.zip
Revert "Remove threshold on object size for inserting lifetime begin / end"
Revert this patch while I investigate some sanitizer failures off-line. llvm-svn: 219307
Diffstat (limited to 'clang/test/CodeGenCXX')
-rw-r--r--clang/test/CodeGenCXX/destructors.cpp9
-rw-r--r--clang/test/CodeGenCXX/nrvo.cpp15
-rw-r--r--clang/test/CodeGenCXX/unnamed-object-lifetime.cpp18
3 files changed, 13 insertions, 29 deletions
diff --git a/clang/test/CodeGenCXX/destructors.cpp b/clang/test/CodeGenCXX/destructors.cpp
index ac2a30ea5c0..bc9a683be5d 100644
--- a/clang/test/CodeGenCXX/destructors.cpp
+++ b/clang/test/CodeGenCXX/destructors.cpp
@@ -280,8 +280,6 @@ namespace test5 {
// CHECK5: [[ELEMS:%.*]] = alloca [5 x [[A:%.*]]], align
// CHECK5-NEXT: [[EXN:%.*]] = alloca i8*
// CHECK5-NEXT: [[SEL:%.*]] = alloca i32
- // CHECK5-NEXT: [[PELEMS:%.*]] = bitcast [5 x [[A]]]* [[ELEMS]] to i8*
- // CHECK5-NEXT: call void @llvm.lifetime.start(i64 5, i8* [[PELEMS]])
// CHECK5-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x [[A]]]* [[ELEMS]], i32 0, i32 0
// CHECK5-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 5
// CHECK5-NEXT: br label
@@ -290,8 +288,7 @@ namespace test5 {
// CHECK5-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[ELT]])
// CHECK5: [[T0:%.*]] = icmp eq [[A]]* [[ELT]], [[BEGIN]]
// CHECK5-NEXT: br i1 [[T0]],
- // CHECK5: call void @llvm.lifetime.end
- // CHECK5-NEXT: ret void
+ // CHECK5: ret void
// lpad
// CHECK5: [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[ELT]]
// CHECK5-NEXT: br i1 [[EMPTY]]
@@ -408,9 +405,7 @@ namespace test9 {
f1<int>();
f2();
}
-
- // CHECK5-LABEL: define void @_ZN5test93barEv(
- // CHECK5: invoke void @_ZN5test97ArgTypeD1Ev(%"struct.test9::ArgType"* %
+ // CHECK5: call void @_ZN5test97ArgTypeD1Ev(%"struct.test9::ArgType"* %
// CHECK5: call void @_ZN5test92f2Ev()
}
diff --git a/clang/test/CodeGenCXX/nrvo.cpp b/clang/test/CodeGenCXX/nrvo.cpp
index bc184e5c5ee..aad287dc320 100644
--- a/clang/test/CodeGenCXX/nrvo.cpp
+++ b/clang/test/CodeGenCXX/nrvo.cpp
@@ -54,22 +54,16 @@ X test2(bool B) {
return x;
// CHECK: call {{.*}} @_ZN1XC1Ev
- // CHECK-NEXT: {{.*}} getelementptr inbounds %class.X* %y, i32 0, i32 0
- // CHECK-NEXT: call void @llvm.lifetime.start
// CHECK-NEXT: call {{.*}} @_ZN1XC1Ev
// CHECK: call {{.*}} @_ZN1XC1ERKS_
// CHECK: call {{.*}} @_ZN1XC1ERKS_
// CHECK: call {{.*}} @_ZN1XD1Ev
- // CHECK-NEXT: call void @llvm.lifetime.end
// CHECK: call {{.*}} @_ZN1XD1Ev
- // CHECK-NEXT: call void @llvm.lifetime.end
// CHECK: ret void
// The block ordering in the -fexceptions IR is unfortunate.
- // CHECK-EH: call void @llvm.lifetime.start
- // CHECK-EH-NEXT: call {{.*}} @_ZN1XC1Ev
- // CHECK-EH: call void @llvm.lifetime.start
+ // CHECK-EH: call {{.*}} @_ZN1XC1Ev
// CHECK-EH-NEXT: invoke {{.*}} @_ZN1XC1Ev
// -> %invoke.cont, %lpad
@@ -102,9 +96,7 @@ X test2(bool B) {
// -> %invoke.cont11, %lpad
// %invoke.cont11: normal cleanup for 'x'
- // CHECK-EH: call void @llvm.lifetime.end
- // CHECK-EH-NEXT: call {{.*}} @_ZN1XD1Ev
- // CHECK-EH-NEXT: call void @llvm.lifetime.end
+ // CHECK-EH: call {{.*}} @_ZN1XD1Ev
// CHECK-EH-NEXT: ret void
// %eh.cleanup: EH cleanup for 'x'
@@ -176,12 +168,9 @@ X test6() {
X a __attribute__((aligned(8)));
return a;
// CHECK: [[A:%.*]] = alloca [[X:%.*]], align 8
- // CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds %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 void @llvm.lifetime.end(i64 1, i8* [[PTR]])
// CHECK-NEXT: ret void
}
diff --git a/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp b/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp
index a90cd158ddd..22a64bcd4d5 100644
--- a/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp
+++ b/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp
@@ -6,7 +6,7 @@
struct X {
X();
~X();
- char t[33];
+ char t[33]; // make the class big enough so that lifetime markers get inserted
};
extern void useX(const X &);
@@ -118,18 +118,18 @@ struct Z {
extern void useZ(const Z &);
-// Check lifetime markers are inserted even if the unnamed object is small
-// CHECK-LABEL: define void @_Z11notTooSmallv
-// CHECK-EH-LABEL: define void @_Z11notTooSmallv
-void notTooSmall() {
- // CHECK: call void @llvm.lifetime.start
+// Check lifetime markers are not inserted if the unnamed object is too small
+// CHECK-LABEL: define void @_Z8tooSmallv
+// CHECK-EH-LABEL: define void @_Z8tooSmallv
+void tooSmall() {
+ // CHECK-NOT: call void @llvm.lifetime.start
// CHECK: call void @_Z4useZRK1Z
- // CHECK: call void @llvm.lifetime.end
+ // CHECK-NOT: call void @llvm.lifetime.end
// CHECK: ret
//
- // CHECK-EH: call void @llvm.lifetime.start
+ // CHECK-EH-NOT: call void @llvm.lifetime.start
// CHECK-EH: invoke void @_Z4useZRK1Z
- // CHECK-EH: call void @llvm.lifetime.end
+ // CHECK-EH-NOT: call void @llvm.lifetime.end
// CHECK-EH: ret
useZ(Z());
}
OpenPOWER on IntegriCloud