1/* Radar 4535968 */ 2/* { dg-do compile { target *-*-darwin* } } */ 3/* { dg-options "-O0 -gdwarf-2 -dA -fno-eliminate-unused-debug-types" } */ 4/* { dg-final { scan-assembler "__debug_pubtypes" } } */ 5/* { dg-final { scan-assembler "long+\[ \t\]+\(0x\)?\[0-9a-f]+\[ \t\n\]+\[#;@]+\[ \t\]+Length of Public Type Names Info" } } */ 6/* { dg-final { scan-assembler "\"empty\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */ 7/* { dg-final { scan-assembler "\"A\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */ 8/* { dg-final { scan-assembler "\"B\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */ 9 10 11struct A 12{ 13 virtual ~A (); 14 int a1; 15}; 16 17A::~A() 18{ 19 a1 = 800; 20} 21 22struct B : public A 23{ 24 virtual ~B (); 25 int b1; 26 int b2; 27}; 28 29B::~B() 30{ 31 a1 = 900; 32 b1 = 901; 33 b2 = 902; 34} 35 36// Stop the compiler from optimizing away data. 37void refer (A *) 38{ 39 ; 40} 41 42struct empty {}; 43 44// Stop the compiler from optimizing away data. 45void refer (empty *) 46{ 47 ; 48} 49 50int main (void) 51{ 52 A alpha, *aap, *abp; 53 B beta, *bbp; 54 empty e; 55 56 alpha.a1 = 100; 57 beta.a1 = 200; beta.b1 = 201; beta.b2 = 202; 58 59 aap = α refer (aap); 60 abp = β refer (abp); 61 bbp = β refer (bbp); 62 refer (&e); 63 64 return 0; // marker return 0 65} // marker close brace 66