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;
}
|