summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2006-11-25 13:21:43 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2006-11-25 13:21:43 +0000
commit6ba1bd36994ef74d203e69b6d9af4367906a6302 (patch)
tree2557391b726a6ad8ac3e690eb5e61b4d6e63987e /gcc/function.c
parent05549c9604478e34987a41237d67261c42081c0a (diff)
downloadgcc-6ba1bd36994ef74d203e69b6d9af4367906a6302.tar.gz
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
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index a27d8cbb19f..78dfe81a7fb 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;