1// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s 2 3// PR5392 4namespace PR5392 { 5struct A 6{ 7 static int a; 8}; 9 10A a1; 11void f() 12{ 13 // CHECK: store i32 10, i32* @_ZN6PR53921A1aE 14 a1.a = 10; 15 // CHECK: store i32 20, i32* @_ZN6PR53921A1aE 16 A().a = 20; 17} 18 19} 20 21struct A { 22 A(); 23 ~A(); 24 enum E { Foo }; 25}; 26 27A *g(); 28 29void f(A *a) { 30 A::E e1 = a->Foo; 31 32 // CHECK: call %struct.A* @_Z1gv() 33 A::E e2 = g()->Foo; 34 // CHECK: call void @_ZN1AC1Ev( 35 // CHECK: call void @_ZN1AD1Ev( 36 A::E e3 = A().Foo; 37} 38 39namespace test3 { 40struct A { 41 static int foo(); 42}; 43int f() { 44 return A().foo(); 45} 46} 47 48namespace test4 { 49 struct A { 50 int x; 51 }; 52 struct B { 53 int x; 54 void foo(); 55 }; 56 struct C : A, B { 57 }; 58 59 extern C *c_ptr; 60 61 // CHECK: define i32 @_ZN5test44testEv() 62 int test() { 63 // CHECK: load {{.*}} @_ZN5test45c_ptrE 64 // CHECK-NEXT: bitcast 65 // CHECK-NEXT: getelementptr 66 // CHECK-NEXT: bitcast 67 // CHECK-NEXT: call void @_ZN5test41B3fooEv 68 c_ptr->B::foo(); 69 70 // CHECK: load {{.*}} @_ZN5test45c_ptrE 71 // CHECK-NEXT: bitcast 72 // CHECK-NEXT: getelementptr 73 // CHECK-NEXT: bitcast 74 // CHECK-NEXT: getelementptr 75 // CHECK-NEXT: store i32 5 76 c_ptr->B::x = 5; 77 78 // CHECK: load {{.*}} @_ZN5test45c_ptrE 79 // CHECK-NEXT: bitcast 80 // CHECK-NEXT: getelementptr 81 // CHECK-NEXT: bitcast 82 // CHECK-NEXT: getelementptr 83 // CHECK-NEXT: load i32* 84 return c_ptr->B::x; 85 } 86} 87