diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2013-03-25 11:24:12 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2013-03-25 11:24:12 +0000 |
commit | 1e1b18c1c7963e3f5ea48c7f4bca0e25481cf07c (patch) | |
tree | 56d6475b62926443d7677602cac472486041af7a /gcc | |
parent | 9a776a830e8342b8a764ff2596c28f2e60046e16 (diff) | |
download | gcc-1e1b18c1c7963e3f5ea48c7f4bca0e25481cf07c.zip gcc-1e1b18c1c7963e3f5ea48c7f4bca0e25481cf07c.tar.gz gcc-1e1b18c1c7963e3f5ea48c7f4bca0e25481cf07c.tar.bz2 |
function.c (emit_use_return_register_into_block): On cc0 targets, do not emit the sequence between cc0 setter and user.
* function.c (emit_use_return_register_into_block): On cc0 targets,
do not emit the sequence between cc0 setter and user.
From-SVN: r197036
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/function.c | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c782c04..072efd7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,7 +1,12 @@ +2013-03-25 Eric Botcazou <ebotcazou@adacore.com> + + * 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 <ktietz@redhat.com> - * 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 <rguenther@suse.de> diff --git a/gcc/function.c b/gcc/function.c index 5419b88..cd9cb85 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); } |