This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

another silly optimisation case


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]