aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-04-25 17:27:17 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-04-25 17:27:17 -0700
commite03ec28f6eae9b81909b1324d7d61113b2e67b95 (patch)
tree4b19a364284f6bd87873c2a670d47dce3014f8d9
parent07444f1d90c7b70f892063a0ae81bc43a68f6633 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/config/alpha/alpha.c30
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