egcs 1.0.2
H.J. Lu
hjl@lucon.org
Sun Feb 15 14:04:00 GMT 1998
>
>
> > I have 8 patches for egcs 1.0.2. I have sent 3 of them, which have
> > yet to be acked. Should I send my other 5 or should I wait for
> > the backlog to be cleared first?
>
> I gather that there is controversy about spending a lot of effort to
> fix "long double" in a minor release. I would think that if these
I won't call it "a lot of effort".
> changes will not affect code that does not use long double they will
> at least do no harm, and not being able to build glibc does make us
> look bad.
>
>
Here is the patch I have been talking about. It was installed
in egcs evev before egcs 1.0.1 was released.
--
H.J. Lu (hjl@gnu.org)
---
Fri Dec 5 16:26:03 1997 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
* i386.c (notice_update_cc): Remove bogus pentium GCC code.
--- ./../../../import/egcs/gcc/config/i386/i386.c Fri Dec 19 00:47:13 1997
+++ config/i386/i386.c Thu Feb 12 10:49:09 1998
@@ -3397,31 +3397,37 @@
if (cc_status.value1
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
cc_status.value1 = 0;
+
if (cc_status.value2
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
cc_status.value2 = 0;
+
return;
}
+
/* Moving register into memory doesn't alter the cc's.
It may invalidate the RTX's which we remember the cc's came from. */
if (GET_CODE (SET_DEST (exp)) == MEM
&& (REG_P (SET_SRC (exp))
|| GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
{
- if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM
- || reg_mentioned_p (SET_DEST (exp), cc_status.value1))
+ if (cc_status.value1
+ && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
cc_status.value1 = 0;
- if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM
- || reg_mentioned_p (SET_DEST (exp), cc_status.value2))
+ if (cc_status.value2
+ && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
cc_status.value2 = 0;
+
return;
}
+
/* Function calls clobber the cc's. */
else if (GET_CODE (SET_SRC (exp)) == CALL)
{
CC_STATUS_INIT;
return;
}
+
/* Tests and compares set the cc's in predictable ways. */
else if (SET_DEST (exp) == cc0_rtx)
{
@@ -3429,14 +3435,14 @@
cc_status.value1 = SET_SRC (exp);
return;
}
+
/* Certain instructions effect the condition codes. */
else if (GET_MODE (SET_SRC (exp)) == SImode
|| GET_MODE (SET_SRC (exp)) == HImode
|| GET_MODE (SET_SRC (exp)) == QImode)
switch (GET_CODE (SET_SRC (exp)))
{
- case ASHIFTRT: case LSHIFTRT:
- case ASHIFT:
+ case ASHIFTRT: case LSHIFTRT: case ASHIFT:
/* Shifts on the 386 don't set the condition codes if the
shift count is zero. */
if (GET_CODE (XEXP (SET_SRC (exp), 1)) != CONST_INT)
@@ -3444,6 +3450,7 @@
CC_STATUS_INIT;
break;
}
+
/* We assume that the CONST_INT is non-zero (this rtx would
have been deleted if it were zero. */
@@ -3468,6 +3475,7 @@
if (SET_DEST (XVECEXP (exp, 0, 0)) == pc_rtx)
return;
if (SET_DEST (XVECEXP (exp, 0, 0)) == cc0_rtx)
+
{
CC_STATUS_INIT;
if (stack_regs_mentioned_p (SET_SRC (XVECEXP (exp, 0, 0))))
@@ -3481,6 +3489,7 @@
cc_status.value1 = SET_SRC (XVECEXP (exp, 0, 0));
return;
}
+
CC_STATUS_INIT;
}
else
More information about the Gcc
mailing list