1 // RUN: %clang_cc1 -triple powerpc-ibm-aix %s -mdefault-visibility-export-mapping=none -mconstructor-aliases -S -emit-llvm -o - | \ 2 // RUN: FileCheck -check-prefixes=UNSPECIFIED-DEF,EXPLICIT-DEF %s 3 // RUN: %clang_cc1 -triple powerpc-ibm-aix %s -mdefault-visibility-export-mapping=explicit -mconstructor-aliases -S -emit-llvm -o - | \ 4 // RUN: FileCheck -check-prefixes=UNSPECIFIED-DEF,EXPLICIT-EXP %s 5 // RUN: %clang_cc1 -triple powerpc-ibm-aix %s -mdefault-visibility-export-mapping=all -mconstructor-aliases -S -emit-llvm -o - | \ 6 // RUN: FileCheck -check-prefixes=UNSPECIFIED-EXP,EXPLICIT-EXP %s 7 8 class A { 9 public: 10 ~A(); 11 }; 12 13 A::~A() {} 14 15 class __attribute__((visibility("default"))) B { 16 public: 17 ~B(); 18 }; 19 20 B::~B() {} 21 22 void func() { 23 A x; 24 B y; 25 } 26 27 // A::~A() (complete object destructor) 28 // UNSPECIFIED-DEF: @_ZN1AD1Ev = unnamed_addr alias 29 // UNSPECIFIED-EXP: @_ZN1AD1Ev = dllexport unnamed_addr alias 30 31 // B::~B() (complete object destructor) 32 // EXPLICIT-DEF: @_ZN1BD1Ev = unnamed_addr alias 33 // EXPLICIT-EXP: @_ZN1BD1Ev = dllexport unnamed_addr alias 34 35 // A::~A() (base object destructor) 36 // UNSPECIFIED-DEF: define void @_ZN1AD2Ev( 37 // UNSPECIFIED-EXP: define dllexport void @_ZN1AD2Ev( 38 39 // B::~B() (base object destructor) 40 // EXPLICIT-DEF: define void @_ZN1BD2Ev( 41 // EXPLICIT-EXP: define dllexport void @_ZN1BD2Ev( 42