1/* { dg-do compile } */ 2/* { dg-options "-O2 -fdump-tree-pre-stats" } */ 3double cos (double) __attribute__ ((const)); 4double sin (double) __attribute__ ((const)); 5double f(double a) 6{ 7 double b; 8 double c,d; 9 double (*fp) (double) __attribute__ ((const)); 10 /* Fully redundant call, but we need a phi node to merge the results. */ 11 if (a < 2.0) 12 { 13 fp = sin; 14 c = fp (a); 15 } 16 else 17 { 18 c = 1.0; 19 fp = cos; 20 c = fp (a); 21 } 22 d = fp (a); 23 return d + c; 24} 25 26/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ 27/* { dg-final { cleanup-tree-dump "pre" } } */ 28