This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arm-unknown-linux-gnu gcc 3.3.3 ICE while compiling glibc


On Tue, Sep 21, 2004 at 01:55:49PM -0700, Daniel Kegel wrote:

> >It's not exactly obvious to me how to fix this for 3.3 or 3.4.  So I
> >can either use 3.3/3.4, which are broken, or use 3.5^H^H^H4.0, which
> >has a host of other issues at the moment.
> 
> I've been running into that myself cross-compiling.
> I haven't looked into any workarounds yet.

The piece of code below triggers PR15068 (ICE) for me, using gcc
3.3.3 natively compiled using gcc 3.3.3, on an big-endian ARM
(armeb-unknown-linux-gnu) platform, with optimisation turned on
(-O1 or higher.)

double
__fmax (double x, double y)
{
  return (__builtin_isgreaterequal(x, y) || __isnan (y)) ? x : y;
}


If I change it to this, the ICE no longer happens:

double
__fmax (double x, double y)
{
  return (x >= y || __isnan (y)) ? x : y;
}


So I patched glibc with the diff below not to use the
__builtin_isgreater, __builtin_isless, etc etc gcc builtins.  This
allows it to compile sysdeps/generic/s_fmax.c, which is where the
ICE was originally happening.

Not sure if the rest of glibc compiles OK now, that'll take another
few hours to find out.

--- glibc-2.3.3-200405070341/math/math.h.orig   2004-09-24 14:33:13.890914304 +0200
+++ glibc-2.3.3-200405070341/math/math.h        2004-09-24 14:32:58.356609303 +0200
@@ -362,7 +362,7 @@
 # define __NO_MATH_INLINES     1
 #endif
                                                                                                                   
-#if __USE_ISOC99 && __GNUC_PREREQ(2,97)
+#if __USE_ISOC99 && __GNUC_PREREQ(2,97) && 0
 /* ISO C99 defines some macros to compare number while taking care for
    unordered numbers.  Many FPUs provide special instructions to support
    these operations.  Generic support in GCC for these as builtins went



--L

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


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