------- Additional Comments From Thomas dot Koenig at online dot de 2005-03-01 15:43 ------- (In reply to comment #14) > (In reply to comment #13) > > (In reply to comment #11) > I get the same as I got above with the following version on x86: > GNU C version 4.0.0 20050225 (experimental) (i686-pc-linux-gnu) > compiled by GNU C version 4.0.0 20050225 (experimental). > GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
> And no local patches which could cause this. I can only assume that this has regressed, that this is a little-endian problem (why it should be so is beyond me, though), that your specific vibes make this go away or that mine make it appear :-) I have just done the following: - Downloaded the 4.1 20050227 snapshot onto a ia-64 Linux box - untarred it $ mkdir gcc-bin $ cd gcc-bin/ $ ../gcc-4.1-20050227/configure --prefix=$HOME --enable-languages="c,f95" $ make -j2 bootstrap $ make install Then, I get: $ gcc -v Using built-in specs. Target: ia64-unknown-linux-gnu Configured with: ../gcc-4.1-20050227/configure --prefix=/home/zfkts --enable-languages=c,f95 Thread model: posix gcc version 4.1.0 20050227 (experimental) $ 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 -O3 -fdump-tree-optimized -S c-div.c $ cat c-div.c.t65.optimized ;; Function main (main) Analyzing Edge Insertions. main () { float SR.12; float SR.11; float SR.10; float SR.9; float c$imag; float c$real; float SR.6; float SR.5; float SR.4; float SR.3; float D.2255; float D.2254; float D.2253; float D.2252; float D.2251; float D.2250; float D.2249; float D.2248; float D.2247; float D.2246; float D.2245; float D.2244; float D.2243; float D.2242; float D.2241; float D.2240; float D.2239; float D.2238; float D.2237; float D.2236; float D.2233; float D.2232; float D.2231; float D.2230; float D.2229; float D.2228; complex float c; complex float b; float a; double D.2225; double D.2224; float D.2223; double D.2222; float D.2221; complex float c.2; complex float c.1; int D.2218; complex float D.2217; complex float D.2216; float a.0; <bb 0>: foo (&a, &b); SR.4 = a; D.2228 = REALPART_EXPR <b>; D.2229 = IMAGPART_EXPR <b>; if (ABS_EXPR <SR.4> < 0.0) goto <L1>; else goto <L2>; <L1>:; D.2238 = SR.4 / 0.0; D.2240 = SR.4 * D.2238 + 0.0; c$real = (D.2229 + D.2228 * D.2238) / D.2240; c$imag = (D.2229 * D.2238 - D.2228) / D.2240; goto <bb 3>; <L2>:; D.2247 = 0.0 / SR.4; D.2249 = SR.4 + D.2247 * 0.0; c$real = (D.2228 + D.2229 * D.2247) / D.2249; c$imag = (D.2229 - D.2228 * D.2247) / D.2249; <bb 3>: return (double) c$real + (double) c$imag < 0.0; } Anything more I can do to test this? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19953