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