From e03ec28f6eae9b81909b1324d7d61113b2e67b95 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 25 Apr 1999 17:27:17 -0700 Subject: [PATCH] * alpha.c (print_operand_address): Account for the subreg word. From-SVN: r26633 --- gcc/ChangeLog | 4 ++++ 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 + + * 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 -- 2.7.4