/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-do run } */ /* { dg-require-effective-target global_constructor } */ int ctor_counter = 1; int dtor_counter; __attribute__((constructor)) void A() { ctor_counter++; } __attribute__((destructor)) void B() { if (dtor_counter == 0) __builtin_abort (); dtor_counter--; } __attribute__((constructor)) static void C() { ctor_counter++; } __attribute__((destructor)) static void D() { if (dtor_counter == 0) __builtin_abort (); dtor_counter--; } int main() { if (ctor_counter != 3) __builtin_abort (); dtor_counter = 2; return 0; } /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */