diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-17 20:12:52 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-17 20:12:52 +0000 |
commit | 00a8c3f6c979a11b15b2a4a4ce08c7888634d6cd (patch) | |
tree | cb4322acfeda89ebbacba7ac742a3c910ac7ea67 /test/CodeGenCXX/init-invariant.cpp | |
parent | 6118612837887cbae365676d53cc3e1c258249aa (diff) |
Don't emit optimization-specific intrinsic at -O0.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150838 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/init-invariant.cpp')
-rw-r--r-- | test/CodeGenCXX/init-invariant.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/test/CodeGenCXX/init-invariant.cpp b/test/CodeGenCXX/init-invariant.cpp index da17303b2d..5d0ff8b0db 100644 --- a/test/CodeGenCXX/init-invariant.cpp +++ b/test/CodeGenCXX/init-invariant.cpp @@ -1,11 +1,15 @@ -// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm %s -O0 -o - | FileCheck %s --check-prefix=CHECK-O0 +// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm %s -O1 -o - | FileCheck %s // Check that we add an llvm.invariant.start to mark when a global becomes // read-only. If globalopt can fold the initializer, it will then mark the // variable as constant. +// Do not produce markers at -O0. +// CHECK-O0-NOT: llvm.invariant.start + struct A { - A() : n(42) {} + A(); int n; }; @@ -13,7 +17,7 @@ struct A { extern const A a = A(); struct B { - B() : n(76) {} + B(); mutable int n; }; @@ -21,7 +25,7 @@ struct B { extern const B b = B(); struct C { - C() : n(81) {} + C(); ~C(); int n; }; @@ -29,7 +33,7 @@ struct C { // CHECK: @c = global {{.*}} zeroinitializer extern const C c = C(); -int f() { return 5; } +int f(); // CHECK: @d = global i32 0 extern const int d = f(); @@ -37,19 +41,15 @@ void e() { static const A a = A(); } -// CHECK: define internal void @__cxx_global_var_init // CHECK: call void @_ZN1AC1Ev({{.*}}* @a) -// CHECK-NEXT: call {{.*}}@llvm.invariant.start(i64 -1, i8* bitcast ({{.*}} @a to i8*)) +// CHECK: call {{.*}}@llvm.invariant.start(i64 -1, i8* bitcast ({{.*}} @a to i8*)) -// CHECK: define internal void @__cxx_global_var_init // CHECK: call void @_ZN1BC1Ev({{.*}}* @b) // CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 -1, i8* bitcast ({{.*}} @b to i8*)) -// CHECK: define internal void @__cxx_global_var_init // CHECK: call void @_ZN1CC1Ev({{.*}}* @c) // CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 -1, i8* bitcast ({{.*}} @c to i8*)) -// CHECK: define internal void @__cxx_global_var_init // CHECK: call i32 @_Z1fv( // CHECK: store {{.*}}, i32* @d // CHECK: call {{.*}}@llvm.invariant.start(i64 -1, i8* bitcast ({{.*}} @d to i8*)) |