1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-ipa-icf"  } */
       3  
       4  #include <stdio.h>
       5  
       6  __attribute__ ((noinline))
       7  int 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))
      23  int 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  
      38  int 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"  } } */