From 9325973e950abdec507306238a253d2c6029a0c6 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 12 May 2005 16:52:37 -0700 Subject: [PATCH] function.c (instantiate_virtual_regs_in_insn): Do not simplify addition to move unless dest is a register. * function.c (instantiate_virtual_regs_in_insn): Do not simplify addition to move unless dest is a register. Do not skip instantiation in dest on addition simplification. From-SVN: r99637 --- gcc/ChangeLog | 6 ++++++ gcc/function.c | 21 ++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aec423e..4ad9bb4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-05-13 Richard Henderson + + * function.c (instantiate_virtual_regs_in_insn): Do not simplify + addition to move unless dest is a register. Do not skip + instantiation in dest on addition simplification. + 2005-05-13 Hans-Peter Nilsson * config/cris/cris.c (cris_print_operand) LAST_VIRTUAL_REGISTER) { start_sequence (); emit_move_insn (SET_DEST (set), new); @@ -1400,7 +1403,6 @@ instantiate_virtual_regs_in_insn (rtx insn) } x = gen_int_mode (offset, recog_data.operand_mode[2]); - insn_code = INSN_CODE (insn); /* Using validate_change and apply_change_group here leaves recog_data in an invalid state. Since we know exactly what @@ -1411,15 +1413,17 @@ instantiate_virtual_regs_in_insn (rtx insn) *recog_data.operand_loc[1] = recog_data.operand[1] = new; *recog_data.operand_loc[2] = recog_data.operand[2] = x; any_change = true; - goto verify; + + /* Fall through into the regular operand fixup loop in + order to take care of operands other than 1 and 2. */ } } } else - extract_insn (insn); - - insn_code = INSN_CODE (insn); - any_change = false; + { + extract_insn (insn); + insn_code = INSN_CODE (insn); + } /* In the general case, we expect virtual registers to appear only in operands, and then only as either bare registers or inside memories. */ @@ -1503,7 +1507,6 @@ instantiate_virtual_regs_in_insn (rtx insn) any_change = true; } - verify: if (any_change) { /* Propagate operand changes into the duplicates. */ -- 2.7.4