1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-ipa-icf" } */ 3 4 #include <stdio.h> 5 6 __attribute__ ((noinline)) foo(int a)7int foo(int a) 8 { 9 void *l = &&error; 10 11 if(a == 4) 12 goto *l; 13 14 return 150; 15 16 error: 17 return a; 18 failure: 19 return a + 2; 20 } 21 22 __attribute__ ((noinline)) foo_wrong(int a)23int foo_wrong(int a) 24 { 25 void *l = &&failure; 26 27 if(a == 4) 28 goto *l; 29 30 return 150; 31 32 error: 33 return a; 34 failure: 35 return a + 2; 36 } 37 main(int argc,char ** argv)38int main(int argc, char **argv) 39 { 40 printf("value: %d\n", foo(argc)); 41 42 return 0; 43 } 44 45 /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf" } } */ 46 /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */ 47