From: ebotcazou Date: Mon, 25 Mar 2013 11:24:12 +0000 (+0000) Subject: * function.c (emit_use_return_register_into_block): On cc0 targets, X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=961299131ad5ad6a9b5fb8fa3b11dd1961cebfdb;p=thirdparty%2Fgcc.git * function.c (emit_use_return_register_into_block): On cc0 targets, do not emit the sequence between cc0 setter and user. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197036 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c782c0407744..072efd7d65a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,7 +1,12 @@ +2013-03-25 Eric Botcazou + + * function.c (emit_use_return_register_into_block): On cc0 targets, + do not emit the sequence between cc0 setter and user. + 2013-03-25 Kai Tietz - * config/i386/predicates.md (local_symbolic_operand): Interpret - dll-imported symbols as none-local. + * config/i386/predicates.md (local_symbolic_operand): Interpret + dll-imported symbols as none-local. 2013-03-25 Richard Biener diff --git a/gcc/function.c b/gcc/function.c index 5419b88593df..cd9cb855d40e 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5598,12 +5598,17 @@ prepare_shrink_wrap (basic_block entry_block) static void emit_use_return_register_into_block (basic_block bb) { - rtx seq; + rtx seq, insn; start_sequence (); use_return_register (); seq = get_insns (); end_sequence (); - emit_insn_before (seq, BB_END (bb)); + insn = BB_END (bb); +#ifdef HAVE_cc0 + if (reg_mentioned_p (cc0_rtx, PATTERN (insn))) + insn = prev_cc0_setter (insn); +#endif + emit_insn_before (seq, insn); }