81 lines · cpp
1// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s2 3// PR53924namespace PR5392 {5struct A6{7 static int a;8};9 10A a1;11void f()12{13 // CHECK: store i32 10, ptr @_ZN6PR53921A1aE14 a1.a = 10;15 // CHECK: store i32 20, ptr @_ZN6PR53921A1aE16 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 noundef ptr @_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-LABEL: define{{.*}} i32 @_ZN5test44testEv()62 int test() {63 // CHECK: load {{.*}} @_ZN5test45c_ptrE64 // CHECK-NEXT: getelementptr65 // CHECK-NEXT: call void @_ZN5test41B3fooEv66 c_ptr->B::foo();67 68 // CHECK: load {{.*}} @_ZN5test45c_ptrE69 // CHECK-NEXT: getelementptr70 // CHECK-NEXT: getelementptr71 // CHECK-NEXT: store i32 572 c_ptr->B::x = 5;73 74 // CHECK: load {{.*}} @_ZN5test45c_ptrE75 // CHECK-NEXT: getelementptr76 // CHECK-NEXT: getelementptr77 // CHECK-NEXT: load i32, ptr78 return c_ptr->B::x;79 }80}81