diff options
author | Jan Hubicka <jh@suse.cz> | 2001-07-30 12:54:10 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-07-30 10:54:10 +0000 |
commit | 592a6d1d968e6dba552439bb22a428240118285f (patch) | |
tree | 0ed4d0b298a725cfff78f895ec02084e48d3f940 /gcc/combine.c | |
parent | 60e19e8b3ffaf5dac4fe94e472b6b695ed4436b0 (diff) | |
download | gcc-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.c | 11 |
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++; |