diff options
author | Arnaud A. de Grandmaison <arnaud.degrandmaison@arm.com> | 2014-07-18 14:23:58 +0000 |
---|---|---|
committer | Arnaud A. de Grandmaison <arnaud.degrandmaison@arm.com> | 2014-07-18 14:23:58 +0000 |
commit | 18bc4fff48f4caa7a3fa0750aa0fbecd3ff1ba93 (patch) | |
tree | 19a1d2de140a56753d70fb502f2c76bc74a59285 /clang/test/CodeGenCXX/unnamed-object-lifetime.cpp | |
parent | 1be89f4977724896289e6d706690ada275e9f451 (diff) | |
download | bcm5719-llvm-18bc4fff48f4caa7a3fa0750aa0fbecd3ff1ba93.tar.gz bcm5719-llvm-18bc4fff48f4caa7a3fa0750aa0fbecd3ff1ba93.zip |
Revert "Emit lifetime.start / lifetime.end markers for unnamed temporary objects."
This reverts commit dbf785a6432f78a8ec229665876647c4cc610d3d, while I qm
investigating a buildbot failure.
llvm-svn: 213380
Diffstat (limited to 'clang/test/CodeGenCXX/unnamed-object-lifetime.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/unnamed-object-lifetime.cpp | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp b/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp deleted file mode 100644 index 2d948ff6118..00000000000 --- a/clang/test/CodeGenCXX/unnamed-object-lifetime.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -o - %s | FileCheck %s -// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -fcxx-exceptions -fexceptions -o - %s | FileCheck --check-prefix=CHECK-EH %s - -// Test lifetime marker generation for unnamed temporary objects. - -struct X { - X(); - ~X(); - char t[33]; // make the class big enough so that lifetime markers get inserted -}; - -extern void useX(const X &); - -// CHECK-LABEL: define void @_Z6simplev -// CHECK-EH-LABEL: define void @_Z6simplev -void simple() { - // CHECK: [[ALLOCA:%.*]] = alloca %struct.X - // CHECK: [[PTR:%.*]] = getelementptr inbounds %struct.X* [[ALLOCA]], i32 0, i32 0, i32 0 - // CHECK: call void @llvm.lifetime.start(i64 33, i8* [[PTR]]) - // CHECK-NEXT: call void @_ZN1XC1Ev - // CHECK-NEXT: call void @_Z4useXRK1X - // CHECK-NEXT: call void @_ZN1XD1Ev - // CHECK-NEXT: call void @llvm.lifetime.end(i64 33, i8* [[PTR]]) - // - // CHECK-EH: [[ALLOCA:%.*]] = alloca %struct.X - // CHECK-EH: [[PTR:%.*]] = getelementptr inbounds %struct.X* [[ALLOCA]], i32 0, i32 0, i32 0 - // CHECK-EH: call void @llvm.lifetime.start(i64 33, i8* [[PTR]]) - // CHECK-EH-NEXT: call void @_ZN1XC1Ev - // CHECK-EH: invoke void @_Z4useXRK1X - // CHECK-EH: invoke void @_ZN1XD1Ev - // CHECK-EH: call void @llvm.lifetime.end(i64 33, i8* [[PTR]]) - // CHECK-EH: call void @llvm.lifetime.end(i64 33, i8* [[PTR]]) - useX(X()); -} - -struct Y { - Y(){} - ~Y(){} - char t[34]; // make the class big enough so that lifetime markers get inserted -}; - -extern void useY(const Y &); - -// Check lifetime markers are inserted, despite Y's trivial constructor & destructor -// CHECK-LABEL: define void @_Z7trivialv -// CHECK-EH-LABEL: define void @_Z7trivialv -void trivial() { - // CHECK: [[ALLOCA:%.*]] = alloca %struct.Y - // CHECK: [[PTR:%.*]] = getelementptr inbounds %struct.Y* [[ALLOCA]], i32 0, i32 0, i32 0 - // CHECK: call void @llvm.lifetime.start(i64 34, i8* [[PTR]]) - // CHECK-NEXT: call void @_Z4useYRK1Y - // CHECK-NEXT: call void @llvm.lifetime.end(i64 34, i8* [[PTR]]) - // - // CHECK-EH: [[ALLOCA:%.*]] = alloca %struct.Y - // CHECK-EH: [[PTR:%.*]] = getelementptr inbounds %struct.Y* [[ALLOCA]], i32 0, i32 0, i32 0 - // CHECK-EH: call void @llvm.lifetime.start(i64 34, i8* [[PTR]]) - // CHECK-EH-NEXT: invoke void @_Z4useYRK1Y - // CHECK-EH: call void @llvm.lifetime.end(i64 34, i8* [[PTR]]) - // CHECK-EH: call void @llvm.lifetime.end(i64 34, i8* [[PTR]]) - useY(Y()); -} - -struct Z { - Z(); - ~Z(); - char t; -}; - -extern void useZ(const Z &); - -// 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-NOT: call void @llvm.lifetime.end - // CHECK: ret - // - // CHECK-EH-NOT: call void @llvm.lifetime.start - // CHECK-EH: invoke void @_Z4useZRK1Z - // CHECK-EH-NOT: call void @llvm.lifetime.end - // CHECK-EH: ret - useZ(Z()); -} - -// Check the lifetime are inserted at the right place in their respective scope -// CHECK-LABEL: define void @_Z6scopesv -void scopes() { - // CHECK: alloca %struct - // CHECK: alloca %struct - // CHECK: call void @llvm.lifetime.start(i64 33, i8* [[X:%.*]]) - // CHECK: call void @llvm.lifetime.end(i64 33, i8* [[X]]) - // CHECK: call void @llvm.lifetime.start(i64 34, i8* [[Y:%.*]]) - // CHECK: call void @llvm.lifetime.end(i64 34, i8* [[Y]]) - useX(X()); - useY(Y()); -} |