int test (void)
{
      double f;
      int j = (f > 0.);
      return j;
}

Under "gcc (GCC) 4.1.0 (SUSE Linux)", with CFLAGS = -m32 -S, and under all of the optimization levels (O0 through O3), the following is produced :
      flds    .LC2
      fldz
      fxch    %st(1)
      fucompp
      fnstsw  %ax
     :

The FXCH instruction is unnecessary if the FLDS and FLDZ instructions were ordered in reverse. Why does this type of optimization not take place?

--
Krishna Myneni

Reply via email to