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