diff options
| author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-09 21:49:02 +0000 |
|---|---|---|
| committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-09 21:49:02 +0000 |
| commit | 27465d7d62ea2cd11fb15d47bc94b429c795b498 (patch) | |
| tree | 90fe835abd86ef54cd1b3a43111a43e1d2075c56 | |
| parent | b09c4d7fb4ad74dd69c3bcbdb34cb94cec3991d1 (diff) | |
| download | ppe42-gcc-27465d7d62ea2cd11fb15d47bc94b429c795b498.tar.gz ppe42-gcc-27465d7d62ea2cd11fb15d47bc94b429c795b498.zip | |
* gcse.c (cprop_jump): Delete insn if simplified jump is no-op.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48694 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/gcse.c | 30 |
2 files changed, 15 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b5deaa929a..6f13ad2f65b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-01-09 Jan Hubicka <jh@suse.cz> + + * gcse.c (cprop_jump): Delete insn if simplified jump is no-op. + 2002-01-09 Richard Henderson <rth@redhat.com> * config/arm/arm.c (arm_gen_constant): Use trunc_int_for_mode. diff --git a/gcc/gcse.c b/gcc/gcse.c index e91b61a4845..e8361fc5aab 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -4037,28 +4037,20 @@ cprop_jump (bb, insn, from, src) if (rtx_equal_p (new, SET_SRC (set))) return 0; - /* If this is now a no-op leave it that way, but update LABEL_NUSED if - necessary. */ + /* If this is now a no-op delete it, otherwise this must be a valid insn. */ if (new == pc_rtx) + delete_insn (insn); + else { - SET_SRC (set) = new; - - if (JUMP_LABEL (insn) != 0) - { - --LABEL_NUSES (JUMP_LABEL (insn)); - JUMP_LABEL (insn) = NULL_RTX; - } - } - - /* Otherwise, this must be a valid instruction. */ - else if (! validate_change (insn, &SET_SRC (set), new, 0)) - return 0; + if (! validate_change (insn, &SET_SRC (set), new, 0)) + return 0; - /* If this has turned into an unconditional jump, - then put a barrier after it so that the unreachable - code will be deleted. */ - if (GET_CODE (SET_SRC (set)) == LABEL_REF) - emit_barrier_after (insn); + /* If this has turned into an unconditional jump, + then put a barrier after it so that the unreachable + code will be deleted. */ + if (GET_CODE (SET_SRC (set)) == LABEL_REF) + emit_barrier_after (insn); + } run_jump_opt_after_gcse = 1; |

