brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 3a56576 Raw
46 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -triple x86_64 -Werror %s -o - | FileCheck %s2 3// CHECK:      @llvm.used = appending global [7 x ptr]4// CHECK-SAME:   @_ZN2X0C2Ev5// CHECK-SAME:   @_ZN2X0C1Ev6// CHECK-SAME:   @_ZN2X0D2Ev7// CHECK-SAME:   @_ZN2X0D1Ev8// CHECK-SAME:   @_ZN2X16Nested2f1Ev9// CHECK-SAME:   @_ZN10merge_declL4funcEv10// CHECK-SAME:   @_ZN18instantiate_member1SIiE1fEv11 12struct X0 {13  // CHECK: define linkonce_odr{{.*}} @_ZN2X0C1Ev({{.*}}14  __attribute__((used, retain)) X0() {}15  // CHECK: define linkonce_odr{{.*}} @_ZN2X0D1Ev({{.*}}16  __attribute__((used, retain)) ~X0() {}17};18 19struct X1 {20  struct Nested {21    // CHECK-NOT: 2f0Ev22    // CHECK: define linkonce_odr{{.*}} @_ZN2X16Nested2f1Ev({{.*}}23    void __attribute__((retain)) f0() {}24    void __attribute__((used, retain)) f1() {}25  };26};27 28// CHECK: define internal void @_ZN10merge_declL4funcEv(){{.*}}29namespace merge_decl {30static void func();31void bar() { void func() __attribute__((used, retain)); }32static void func() {}33} // namespace merge_decl34 35namespace instantiate_member {36template <typename T>37struct S {38  void __attribute__((used, retain)) f() {}39};40 41void test() {42  // CHECK: define linkonce_odr{{.*}} void @_ZN18instantiate_member1SIiE1fEv({{.*}}43  S<int> a;44}45} // namespace instantiate_member46