X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfig%2Falpha%2Falpha.c;h=13218fbf5602e11f25c6afcb95bb73f6a66ea104;hb=a3e39a2447fee739263af3792fd4a8fffe483a74;hp=7b6966e275f14a260e777d6174aca0dc4127cca6;hpb=5b7dad94065ac5bbb69f8a71124b00b6e1baf9cb;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 7b6966e275f..13218fbf560 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1,6 +1,5 @@ /* Subroutines used for code generation on the DEC Alpha. - Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 1999 Free Software - Foundation, Inc. + 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. @@ -2935,33 +2934,30 @@ print_operand_address (file, addr) FILE *file; rtx addr; { - rtx basereg = NULL_RTX; + int basereg = 31; 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) + 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 (); + 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 ? REGNO (basereg) : 31); + fprintf (file, "($%d)", basereg); } /* Emit RTL insns to initialize the variable parts of a trampoline at