From 6ba1bd36994ef74d203e69b6d9af4367906a6302 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sat, 25 Nov 2006 13:21:43 +0000 Subject: [PATCH] function.c (instantiate_virtual_regs_in_insn): Call force_reg inside start_sequence / end_sequence pair. * function.c (instantiate_virtual_regs_in_insn): Call force_reg inside start_sequence / end_sequence pair. From-SVN: r119192 --- gcc/ChangeLog | 5 +++++ gcc/function.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e2e0db3eb2f..30e59fce7c52 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-11-25 Joseph Myers + + * function.c (instantiate_virtual_regs_in_insn): Call force_reg + inside start_sequence / end_sequence pair. + 2006-11-25 Steven Bosscher * jump.c (mark_all_labels): Work in cfglayout mode. diff --git a/gcc/function.c b/gcc/function.c index a27d8cbb19f6..78dfe81a7fbb 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1529,7 +1529,14 @@ instantiate_virtual_regs_in_insn (rtx insn) Validate the new value vs the insn predicate. Note that asm insns will have insn_code -1 here. */ if (!safe_insn_predicate (insn_code, i, x)) - x = force_reg (insn_data[insn_code].operand[i].mode, x); + { + start_sequence (); + x = force_reg (insn_data[insn_code].operand[i].mode, x); + seq = get_insns (); + end_sequence (); + if (seq) + emit_insn_before (seq, insn); + } *recog_data.operand_loc[i] = recog_data.operand[i] = x; any_change = true;