mips-sgi-irix6.5SE doesn't bootstrap
Joern Rennecke
amylaar@cygnus.co.uk
Thu May 21 02:50:00 GMT 1998
> > Wed May 20 20:54:49 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
> >
> > * reload1.c (reload_reg_free_before_p): Earlier inputs might
> > now conflict.
> Looks reasonable to me. Please install this patch.
Sorry, I got my programmer's hangover this morning and found out that that
patch is incorrect.
Please check out this one instead:
Thu May 21 09:32:37 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (reload_reg_free_for_value_p): Fix RELOAD_FOR_INPUT
end of lifetime.
Index: reload1.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/reload1.c,v
retrieving revision 1.32
diff -p -r1.32 reload1.c
*** reload1.c 1998/05/19 09:23:21 1.32
--- reload1.c 1998/05/21 08:35:52
*************** reload_reg_free_for_value_p (regno, opnu
*** 5003,5009 ****
monotonic.
Some reload types use different 'buckets' for each operand.
So there are MAX_RECOG_OPERANDS different time values for each
! such reload type. */
switch (type)
{
case RELOAD_FOR_OTHER_ADDRESS:
--- 5003,5016 ----
monotonic.
Some reload types use different 'buckets' for each operand.
So there are MAX_RECOG_OPERANDS different time values for each
! such reload type.
! We compute TIME1 as the time when the register for the prospective
! new reload will become live, and TIME2 for each existing
! reload as the time when that the reload register of that reload
! ceases to be live.
! Where there is little to be gained by exact lifetime calculations,
! we just make conservative assumptions, i.e. a longer lifetime;
! this is done in the 'default:' cases. */
switch (type)
{
case RELOAD_FOR_OTHER_ADDRESS:
*************** reload_reg_free_for_value_p (regno, opnu
*** 5022,5031 ****
time1 = opnum * 4 + 2;
break;
case RELOAD_FOR_INPUT:
! time1 = opnum * 4 + 3;
break;
/* opnum * 4 + 3 < opnum * 4 + 4
! <= (MAX_RECOG_OPERAND - 1) * 4 + 4 == MAX_RECOG_OPERAND * 4 */
case RELOAD_FOR_OUTPUT_ADDRESS:
time1 = MAX_RECOG_OPERANDS * 4 + opnum;
break;
--- 5029,5040 ----
time1 = opnum * 4 + 2;
break;
case RELOAD_FOR_INPUT:
! /* All RELOAD_FOR_INPUT_RELOADS remain live till just before the
! instruction is executed. */
! time1 = (MAX_RECOG_OPERANDS - 1) * 4 + 3;
break;
/* opnum * 4 + 3 < opnum * 4 + 4
! <= (MAX_RECOG_OPERANDS - 1) * 4 + 4 == MAX_RECOG_OPERANDS * 4 */
case RELOAD_FOR_OUTPUT_ADDRESS:
time1 = MAX_RECOG_OPERANDS * 4 + opnum;
break;
More information about the Gcc-bugs
mailing list