diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 74949b3aacc7bdb494b59ddf5e34c1e82adbbbf3..abbfb6b657d85c93066e252b72ce55f7ff016733 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Jul 30 12:52:11 CEST 2001 Jan Hubicka <jh@suse.cz> + + * combine.c (try_combine): Avoid barrier after noop jumps. + 2001-07-29 Neil Booth <neil@cat.daikokuya.demon.co.uk> * cpphash.h (struct cpp_reader): Remove import_warning. diff --git a/gcc/combine.c b/gcc/combine.c index 4ece85a68129e844c40e03252de5e8021ca3c634..e9fdffcbaecd2fff9f5bbf41a8564d926c9d5629 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++;