1/* { dg-do compile } */ 2/* { dg-options "-O2 -fdump-ipa-icf" } */ 3 4void destroy (void) 5{ 6} 7 8void remove (void) 9{ 10} 11 12 13struct callbacks 14{ 15 void (*success) (void); 16 void (*error) (void); 17}; 18 19struct callbacks my_callbacks; 20 21__attribute__ ((noinline)) 22void foo() 23{ 24 my_callbacks.success = destroy; 25} 26 27__attribute__ ((noinline)) 28void bar() 29{ 30 my_callbacks.success = remove; 31} 32 33int main() 34{ 35 foo(); 36 bar(); 37 38 return 0; 39} 40 41/* { dg-final { scan-ipa-dump "Semantic equality hit:remove->destroy" "icf" } } */ 42/* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf" } } */ 43/* { dg-final { cleanup-ipa-dump "icf" } } */ 44