(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
pr64307.c
       1  /* { dg-do compile { target c99_runtime } } */
       2  /* { dg-options "-O0 -fipa-icf -fdump-ipa-icf-optimized"  } */
       3  
       4  #include <complex.h>
       5  
       6  typedef _Complex float COMPLEX_FLOAT;
       7  
       8  __attribute__ ((noinline))
       9  static float real_part(COMPLEX_FLOAT a)
      10  {
      11    return *(float*)(&a);
      12  }
      13  
      14  __attribute__ ((noinline))
      15  static float real_part_2(COMPLEX_FLOAT a)
      16  {
      17    return ((float*)(&a))[0];
      18  }
      19  
      20  int main()
      21  {
      22    COMPLEX_FLOAT f = 1.0f + _Complex_I;
      23  
      24    float r1 = real_part(f);
      25    float r2 = real_part_2(f);
      26  
      27    return r1 - r2;
      28  }
      29  
      30  /* { dg-final { scan-ipa-dump "Semantic equality hit:real_part/\[0-9+\]+->real_part_2/\[0-9+\]+" "icf"  } } */
      31  /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */