diff options
Diffstat (limited to 'test/CodeGenCXX/static-data-member.cpp')
-rw-r--r-- | test/CodeGenCXX/static-data-member.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/CodeGenCXX/static-data-member.cpp b/test/CodeGenCXX/static-data-member.cpp index b19067a..4ad339d 100644 --- a/test/CodeGenCXX/static-data-member.cpp +++ b/test/CodeGenCXX/static-data-member.cpp @@ -5,6 +5,12 @@ // CHECK: @_ZN5test31AIiE1xE = weak_odr global i32 0, align 4 // CHECK: @_ZGVN5test31AIiE1xE = weak_odr global i64 0 +// CHECK: _ZN5test51U2k0E = global i32 0 +// CHECK: _ZN5test51U2k1E = global i32 0 +// CHECK: _ZN5test51U2k2E = constant i32 76 +// CHECK-NOT: test51U2k3E +// CHECK-NOT: test51U2k4E + // PR5564. namespace test1 { struct A { @@ -64,3 +70,35 @@ namespace test3 { // CHECK-NEXT: br label // CHECK: ret void } + +// Test that we can fold member lookup expressions which resolve to static data +// members. +namespace test4 { + struct A { + static const int n = 76; + }; + + int f(A *a) { + // CHECK: define i32 @_ZN5test41fEPNS_1AE + // CHECK: ret i32 76 + return a->n; + } +} + +// Test that static data members in unions behave properly. +namespace test5 { + union U { + static int k0; + static const int k1; + static const int k2 = 76; + static const int k3; + static const int k4 = 81; + }; + int U::k0; + const int U::k1 = (k0 = 9, 42); + const int U::k2; + + // CHECK: store i32 9, i32* @_ZN5test51U2k0E + // CHECK: store i32 {{.*}}, i32* @_ZN5test51U2k1E + // CHECK-NOT: store {{.*}} i32* @_ZN5test51U2k2E +} |