diff options
author | Richard Stallman <rms@gnu.org> | 1993-10-12 11:56:41 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-10-12 11:56:41 +0000 |
commit | bfe3c3615affe97ab94036b5274ff51afc485e1c (patch) | |
tree | 431a81cd45587599d76487faaf307910cd33b632 | |
parent | 775ba35df7e1460d3b2058699a888940ead2cbed (diff) | |
download | gcc-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
-rw-r--r-- | gcc/final.c | 7 |
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 |