aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-10-12 11:56:41 +0000
committerRichard Stallman <rms@gnu.org>1993-10-12 11:56:41 +0000
commitbfe3c3615affe97ab94036b5274ff51afc485e1c (patch)
tree431a81cd45587599d76487faaf307910cd33b632 /gcc
parent775ba35df7e1460d3b2058699a888940ead2cbed (diff)
downloadgcc-bfe3c3615affe97ab94036b5274ff51afc485e1c.zip
gcc-bfe3c3615affe97ab94036b5274ff51afc485e1c.tar.gz
gcc-bfe3c3615affe97ab94036b5274ff51afc485e1c.tar.bz2
(final_scan_insn): Call walk_alter_subreg for operands that are PLUS
or MULT, before constrain_operands. From-SVN: r5743
Diffstat (limited to 'gcc')
-rw-r--r--gcc/final.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 5958ead..82077cc 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -105,6 +105,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
rtx peephole ();
void output_asm_insn ();
rtx alter_subreg ();
+static rtx walk_alter_subreg ();
static int alter_cond ();
void output_asm_label ();
static void output_operand ();
@@ -1895,12 +1896,18 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
{
if (GET_CODE (recog_operand[i]) == SUBREG)
recog_operand[i] = alter_subreg (recog_operand[i]);
+ else if (GET_CODE (recog_operand[i]) == PLUS
+ || GET_CODE (recog_operand[i]) == MULT)
+ recog_operand[i] = walk_alter_subreg (recog_operand[i]);
}
for (i = 0; i < insn_n_dups[insn_code_number]; i++)
{
if (GET_CODE (*recog_dup_loc[i]) == SUBREG)
*recog_dup_loc[i] = alter_subreg (*recog_dup_loc[i]);
+ else if (GET_CODE (*recog_dup_loc[i]) == PLUS
+ || GET_CODE (*recog_dup_loc[i]) == MULT)
+ *recog_dup_loc[i] = walk_alter_subreg (*recog_dup_loc[i]);
}
#ifdef REGISTER_CONSTRAINTS