------- Additional Comments From Thomas dot Koenig at online dot de  2005-02-27 
12:52 -------
Is this really fixed?

Look at this:
$ cat c-div.c
#include <math.h>
#include <complex.h>

int main()
{
    float a;
    complex float b,c;
    foo(&a,&b);
    c = b/a;
    return creal(c) + cimag(c) < 0;
}
$ gcc -ffast-math -O3 -fdump-tree-optimized -fno-cx-limited-range -S  c-div.c 
$ tail -20 c-div.c.t65.optimized
  if (ABS_EXPR <SR.26> < 0.0) goto <L1>; else goto <L2>;

<L1>:;
  D.3021 = SR.26 *  Inf;
  D.3022 = SR.26 * D.3021;
  c$real = (D.3012 + D.3011 * D.3021) / D.3022;
  c$imag = (D.3012 * D.3021 - D.3011) / D.3022;
  goto <bb 3>;

<L2>:;
  D.3030 = 0.0 / SR.26;
  c$real = (D.3011 + D.3012 * D.3030) / SR.26;
  c$imag = (D.3012 - D.3011 * D.3030) / SR.26;

<bb 3>:
  return (double) c$real + (double) c$imag < 0.0;

}

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19953

Reply via email to