Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
      2 
      3 // CHECK: @_ZTVZZ1HvEN1S1IEvE1S =
      4 
      5 // CHECK: define {{.*}} @_Z2L1v(
      6 // CHECK: define {{.*}} @_ZZ2L1vEN1S2L2Ev(
      7 // CHECK: define {{.*}} @_ZZ2L1vEN1S2L2E_0v(
      8 // CHECK: define {{.*}} @_ZZ1FvEN1S1T1S1T1GEv(
      9 // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3aEv(
     10 // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3bE_0v(
     11 // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3cEv(
     12 // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3dE_0v(
     13 
     14 void L1() {
     15   {
     16     struct S {
     17       void L2() {
     18         {
     19           struct S {
     20             void L3a() {}
     21           };
     22           S().L3a();
     23         }
     24         {
     25           struct S {
     26             void L3b() {}
     27           };
     28           S().L3b();
     29         }
     30       }
     31     };
     32     S().L2();
     33   }
     34   {
     35     struct S {
     36       void L2() {
     37         {
     38           struct S {
     39             void L3c() {}
     40           };
     41           S().L3c();
     42         }
     43         {
     44           struct S {
     45             void L3d() {}
     46           };
     47           S().L3d();
     48         }
     49       }
     50     };
     51     S().L2();
     52   }
     53 }
     54 
     55 void F() {
     56   struct S {
     57     struct T {
     58       struct S {
     59         struct T {
     60           void G() {}
     61         };
     62       };
     63     };
     64   };
     65   S::T::S::T().G();
     66 }
     67 
     68 struct B { virtual void Foo() = 0; };
     69 void G(const B &);
     70 
     71 void H() {
     72   struct S {
     73     void I() {
     74       struct S : B {
     75         virtual void Foo() {}
     76       };
     77       G(S());
     78     }
     79   };
     80   S().I();
     81 }
     82