diff options
author | Richard Henderson <rth@cygnus.com> | 1999-04-25 17:27:17 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-04-25 17:27:17 -0700 |
commit | e03ec28f6eae9b81909b1324d7d61113b2e67b95 (patch) | |
tree | 4b19a364284f6bd87873c2a670d47dce3014f8d9 | |
parent | 07444f1d90c7b70f892063a0ae81bc43a68f6633 (diff) | |
download | gcc-e03ec28f6eae9b81909b1324d7d61113b2e67b95.zip gcc-e03ec28f6eae9b81909b1324d7d61113b2e67b95.tar.gz gcc-e03ec28f6eae9b81909b1324d7d61113b2e67b95.tar.bz2 |
* alpha.c (print_operand_address): Account for the subreg word.
From-SVN: r26633
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 30 |
2 files changed, 17 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de75f82..1f1944f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Apr 26 00:26:18 1999 Richard Henderson <rth@cygnus.com> + + * alpha.c (print_operand_address): Account for the subreg word. + Mon Apr 26 01:08:36 1999 Toshiyasu Morita (tm@netcom.com) * fold-const.c (make_range): Always initialize arg0 and arg1. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 7b6966e..13218fb 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 |