brintos

brintos / llvm-project-archived public Read only

0
0
Text · 868 B · 8ca37f6 Raw
28 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - %s | FileCheck %s2 3// clang++ not respecting __attribute__((used)) on destructors4struct X0 {5  // CHECK-DAG: define linkonce_odr {{.*}} @_ZN2X0C1Ev6  __attribute__((used)) X0() {}7  // CHECK-DAG: define linkonce_odr {{.*}} @_ZN2X0D1Ev8  __attribute__((used)) ~X0() {}9};10 11// PR19743: not emitting __attribute__((used)) inline methods in nested classes.12struct X1 {13  struct Nested {14    // CHECK-DAG: define linkonce_odr {{.*}} @_ZN2X16Nested1fEv15    void __attribute__((used)) f() {}16  };17};18 19struct X2 {20  // We must delay emission of bar() until foo() has had its body parsed,21  // otherwise foo() would not be emitted.22  void __attribute__((used)) bar() { foo(); }23  void foo() { }24 25  // CHECK-DAG: define linkonce_odr {{.*}} @_ZN2X23barEv26  // CHECK-DAG: define linkonce_odr {{.*}} @_ZN2X23fooEv27};28