On Thu, Sep 27, 2001 at 04:59:47PM +0200, Kjeld Borch Egevang wrote: > When I compile the following function with "gcc -O2" the compiler crashes. > Is this a known problem? > > static float sp_f2l(float x) > { > long l, *xl; > float y; > > xl = (void *)&y; > l = x; > *xl = l; > return y; > } > > I use gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-97.2) > I back ported this from gcc in CVS to gcc 2.96. It works for me. It will be in the next RedHat 7.1/mips update. H.J. ----- 2001-09-29 H.J. Lu <hjl@gnu.org> * gcc/emit-rtl.c (subreg_hard_regno): Comment out dubious code. --- gcc/emit-rtl.c.subreg Sat Sep 29 01:21:24 2001 +++ gcc/emit-rtl.c Sat Sep 29 01:22:06 2001 @@ -734,6 +734,7 @@ subreg_hard_regno (x, check_mode) final_regno = SUBREG_REGNO (x); +#if 0 /* Punt if what we end up with is not a valid regno in the SUBREG's mode, or we went past the end of the inner REG's mode, or we overflow past the last hard regno. */ @@ -743,6 +744,7 @@ subreg_hard_regno (x, check_mode) HARD_REGNO_NREGS (base_regno, GET_MODE (reg))) || final_regno >= FIRST_PSEUDO_REGISTER) abort (); +#endif return final_regno; }