1 /* { dg-do compile { target c99_runtime } } */ 2 /* { dg-options "-O2 -fdump-ipa-icf" } */ 3 /* { dg-add-options c99_runtime } */ 4 5 #include <complex.h> 6 7 static double test; 8 9 __attribute__ ((noinline)) f1(void)10double f1(void) 11 { 12 double complex z1 = 1.0 + 3.0 * I; 13 double complex z2 = 1.0 - 4.0 * I; 14 15 unsigned a = 123; 16 unsigned b = 321; 17 18 if (a & b) 19 return 1.2f; 20 21 if(cimag(z1) > 1) 22 return 1.0f; 23 24 test = cimag(z1) + 2; 25 26 return cimag(z1 + z2); 27 } 28 29 __attribute__ ((noinline)) f2(void)30double f2(void) 31 { 32 double complex z1 = 1.0 + 3.0 * I; 33 double complex z2 = 1.0 - 4.0 * I; 34 35 unsigned a = 123; 36 unsigned b = 321; 37 38 if (a & b) 39 return 1.2f; 40 41 if(cimag(z1) > 1) 42 return 1.0f; 43 44 test = cimag(z1) + 2; 45 46 return cimag(z1 + z2); 47 } 48 main()49int main() 50 { 51 return 1; 52 } 53 54 /* { dg-final { scan-ipa-dump "Semantic equality hit:f1->f2" "icf" } } */ 55 /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf" } } */ 56