1 /* { dg-options "-O2 -fdump-ipa-icf" } */ 2 /* { dg-do run } */ 3 /* { dg-require-effective-target global_constructor } */ 4 5 int ctor_counter = 1; 6 int dtor_counter; 7 8 __attribute__((constructor)) A()9void A() 10 { 11 ctor_counter++; 12 } 13 14 __attribute__((destructor)) B()15void B() 16 { 17 if (dtor_counter == 0) 18 __builtin_abort (); 19 20 dtor_counter--; 21 } 22 23 __attribute__((constructor)) C()24static void C() { 25 ctor_counter++; 26 } 27 28 __attribute__((destructor)) D()29static void D() { 30 if (dtor_counter == 0) 31 __builtin_abort (); 32 33 dtor_counter--; 34 } 35 main()36int main() 37 { 38 if (ctor_counter != 3) 39 __builtin_abort (); 40 41 dtor_counter = 2; 42 43 return 0; 44 } 45 46 /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */ 47