This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Another new egcs bootstrap failure on OSF4: ICE final.c:3555
- To: "Kaveh R. Ghazi" <ghazi at snafu dot Rutgers dot EDU>, egcs-bugs at egcs dot cygnus dot com
- Subject: Re: Another new egcs bootstrap failure on OSF4: ICE final.c:3555
- From: Richard Henderson <rth at cygnus dot com>
- Date: Mon, 26 Apr 1999 00:30:32 -0700
- Cc: egcs-patches at egcs dot cygnus dot com
- References: <199904251944.PAA07405@snafu.rutgers.edu>
On Sun, Apr 25, 1999 at 03:44:50PM -0400, Kaveh R. Ghazi wrote:
> Hmm, it still doesn't bootstrap. :-)
Blah.
> Regarding your ev56 system, it may help to reproduce my error
> if you configure as the system I have, namely alphaev5-dec-osf4.0b.
> (The ev56 will run ev5 code, right?)
Yes. Due to the number of goofs I've had in this area
recently, I've now got two parallel build trees that I
plan on keeping up to date.
r~
* alpha.c (print_operand_address): Account for the subreg word.
Index: config/alpha/alpha.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/alpha/alpha.c,v
retrieving revision 1.84
diff -c -p -d -r1.84 alpha.c
*** alpha.c 1999/04/24 20:50:44 1.84
--- alpha.c 1999/04/26 07:25:53
***************
*** 1,6 ****
/* Subroutines used for code generation on the DEC Alpha.
! Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 1999 Free Software
! Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GNU CC.
--- 1,5 ----
/* Subroutines used for code generation on the DEC Alpha.
! Copyright (C) 1992, 93-98, 1999 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GNU CC.
*************** print_operand_address (file, addr)
*** 2935,2967 ****
FILE *file;
rtx addr;
{
! rtx basereg = NULL_RTX;
HOST_WIDE_INT offset = 0;
if (GET_CODE (addr) == AND)
addr = XEXP (addr, 0);
- if (GET_CODE (addr) == SUBREG)
- addr = SUBREG_REG (addr);
! if (GET_CODE (addr) == REG)
! basereg = addr;
! else if (GET_CODE (addr) == CONST_INT)
! offset = INTVAL (addr);
! else if (GET_CODE (addr) == PLUS
! && GET_CODE (XEXP (addr, 1)) == CONST_INT)
{
offset = INTVAL (XEXP (addr, 1));
! basereg = XEXP (addr, 0);
! if (GET_CODE (basereg) == SUBREG)
! basereg = SUBREG_REG (basereg);
! if (GET_CODE (basereg) != REG)
! abort ();
}
else
abort ();
fprintf (file, HOST_WIDE_INT_PRINT_DEC, offset);
! fprintf (file, "($%d)", basereg ? REGNO (basereg) : 31);
}
/* Emit RTL insns to initialize the variable parts of a trampoline at
--- 2934,2963 ----
FILE *file;
rtx addr;
{
! int basereg = 31;
HOST_WIDE_INT offset = 0;
if (GET_CODE (addr) == AND)
addr = XEXP (addr, 0);
! if (GET_CODE (addr) == PLUS
! && GET_CODE (XEXP (addr, 1)) == CONST_INT)
{
offset = INTVAL (XEXP (addr, 1));
! addr = XEXP (addr, 0);
}
+ if (GET_CODE (addr) == REG)
+ basereg = REGNO (addr);
+ else if (GET_CODE (addr) == SUBREG
+ && GET_CODE (SUBREG_REG (addr)) == REG)
+ basereg = REGNO (SUBREG_REG (addr)) + SUBREG_WORD (addr);
+ else if (GET_CODE (addr) == CONST_INT)
+ offset = INTVAL (addr);
else
abort ();
fprintf (file, HOST_WIDE_INT_PRINT_DEC, offset);
! fprintf (file, "($%d)", basereg);
}
/* Emit RTL insns to initialize the variable parts of a trampoline at