aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2013-03-25 11:24:12 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2013-03-25 11:24:12 +0000
commit1e1b18c1c7963e3f5ea48c7f4bca0e25481cf07c (patch)
tree56d6475b62926443d7677602cac472486041af7a /gcc
parent9a776a830e8342b8a764ff2596c28f2e60046e16 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/function.c9
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);
}