aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-03-08 14:40:47 +0000
committerJeff Law <law@gcc.gnu.org>1999-03-08 07:40:47 -0700
commit86879c21acddbfa729e6172052ab7b79165d27b4 (patch)
tree4a85a1ccf1069a5a93c14cc839e9649fa45ba474 /gcc/flow.c
parent30ca27b4751fd68cb31758d01f309b13144b1cc2 (diff)
downloadgcc-86879c21acddbfa729e6172052ab7b79165d27b4.zip
gcc-86879c21acddbfa729e6172052ab7b79165d27b4.tar.gz
gcc-86879c21acddbfa729e6172052ab7b79165d27b4.tar.bz2
flow.c (merge_blocks_nomove): For HAVE_cc0 targets...
� * flow.c (merge_blocks_nomove): For HAVE_cc0 targets, make sure to also delete the cc0 setter when deleting a conditional branch to the next block. From-SVN: r25642
Diffstat (limited to 'gcc/flow.c')
-rw-r--r--gcc/flow.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 5b72509..3b4ef6e 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1821,7 +1821,20 @@ merge_blocks_nomove (a, b)
else
{
rtx tmp = a->end;
+
a->end = prev_nonnote_insn (tmp);
+
+#ifdef HAVE_cc0
+ /* If this was a conditional jump, we need to also delete
+ the insn that set cc0. */
+ if (! simplejump_p (tmp) && condjump_p (tmp))
+ {
+ PUT_CODE (PREV_INSN (tmp), NOTE);
+ NOTE_LINE_NUMBER (PREV_INSN (tmp)) = NOTE_INSN_DELETED;
+ NOTE_SOURCE_FILE (PREV_INSN (tmp)) = 0;
+ }
+#endif
+
flow_delete_insn (tmp);
}
}