another silly optimisation case

Michael Hayes m.hayes@elec.canterbury.ac.nz
Wed Mar 31 23:46:00 GMT 1999


Matthew Kirkwood writes:
 > Hi,
 > 
 > egcs RH5.2 (egcs-2.90.27 980315 (egcs-1.0.2 release))
 > generates different code for these two functions, the
 > first including a jump even with -O6:
 > 
 > int f(int g) { return g ? 34 : 0; }
 > 
 > int g(int f) { return f && 34; }
 > 
 > I don't suppose (x ? y : 0) is a hugely common construction
 > but it seems to be another candidate for simple optimisation.

While these functions are not equivalent (f will return 34 while g
will return 1), the first case will generate suboptimal code on
machines with conditional move instructions.  There was a thread I
started a month or two ago on this.

Michael.



More information about the Gcc mailing list