/* { dg-do run } */ /* { dg-options "-O3 -fdump-ipa-icf" } */ struct A { A() {ptr=&b;} A(const A &a) {ptr = &b;} void test() { if (ptr != &b) __builtin_abort ();} int b; int *ptr; }; A test1(A a) { a.test(); return a; } A test2(A a) { a.test(); return a; } __attribute__ ((noinline)) static void test_me (A (*t)(A)) { struct A a, b=t(a); b.test (); } int main() { test_me (test1); test_me (test2); return 0; } /* { dg-final { scan-ipa-dump-times "Unified; Wrapper has been created" 1 "icf" } } */