summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-09 21:49:02 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-09 21:49:02 +0000
commit27465d7d62ea2cd11fb15d47bc94b429c795b498 (patch)
tree90fe835abd86ef54cd1b3a43111a43e1d2075c56
parentb09c4d7fb4ad74dd69c3bcbdb34cb94cec3991d1 (diff)
downloadppe42-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/ChangeLog4
-rw-r--r--gcc/gcse.c30
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;
OpenPOWER on IntegriCloud