brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 0e57c7e Raw
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