aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-07-30 12:54:10 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-07-30 10:54:10 +0000
commit592a6d1d968e6dba552439bb22a428240118285f (patch)
tree0ed4d0b298a725cfff78f895ec02084e48d3f940 /gcc/combine.c
parent60e19e8b3ffaf5dac4fe94e472b6b695ed4436b0 (diff)
downloadgcc-592a6d1d968e6dba552439bb22a428240118285f.zip
gcc-592a6d1d968e6dba552439bb22a428240118285f.tar.gz
gcc-592a6d1d968e6dba552439bb22a428240118285f.tar.bz2
* combine.c (try_combine): Avoid barrier after noop jumps
From-SVN: r44470
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 4ece85a..e9fdffc 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2763,10 +2763,7 @@ try_combine (i3, i2, i1, new_direct_jump_p)
BARRIER following it since it may have initially been a
conditional jump. It may also be the last nonnote insn. */
- if (GET_CODE (newpat) == RETURN || any_uncondjump_p (i3)
- || (GET_CODE (newpat) == SET
- && SET_SRC (newpat) == pc_rtx
- && SET_DEST (newpat) == pc_rtx))
+ if (GET_CODE (newpat) == RETURN || any_uncondjump_p (i3))
{
*new_direct_jump_p = 1;
@@ -2774,6 +2771,12 @@ try_combine (i3, i2, i1, new_direct_jump_p)
|| GET_CODE (temp) != BARRIER)
emit_barrier_after (i3);
}
+ /* An NOOP jump does not need barrier, but it does need cleaning up
+ of CFG. */
+ if (GET_CODE (newpat) == SET
+ && SET_SRC (newpat) == pc_rtx
+ && SET_DEST (newpat) == pc_rtx)
+ *new_direct_jump_p = 1;
}
combine_successes++;