diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1998-03-05 22:05:51 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-03-05 15:05:51 -0700 |
commit | ac9b3c970ec8bcc697d641e44e194ca99e65bf47 (patch) | |
tree | 00eaa7957d065f847be209659ab8054a2b40303b /gcc | |
parent | 6e92f4b6a2371ce4bb05f7021653f962d73605aa (diff) | |
download | gcc-ac9b3c970ec8bcc697d641e44e194ca99e65bf47.zip gcc-ac9b3c970ec8bcc697d641e44e194ca99e65bf47.tar.gz gcc-ac9b3c970ec8bcc697d641e44e194ca99e65bf47.tar.bz2 |
jump.c (jump_optimize): Call mark_jump_label also for deleted insns.
* jump.c (jump_optimize): Call mark_jump_label also for deleted
insns.
(mark_jump_label): Don't increment ref counts for deleted insns.
From-SVN: r18420
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/jump.c | 19 |
2 files changed, 16 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b23c8b..a9555d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Mar 5 23:06:26 1998 J"orn Rennecke <amylaar@cygnus.co.uk> + + * jump.c (jump_optimize): Call mark_jump_label also for deleted + insns. + (mark_jump_label): Don't increment ref counts for deleted insns. + Thu Mar 5 09:55:15 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * mips/iris6.h (TARGET_DEFAULT): Parenthesize macro definition. @@ -212,11 +212,10 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan) also make a chain of all returns. */ for (insn = f; insn; insn = NEXT_INSN (insn)) - if (GET_RTX_CLASS (GET_CODE (insn)) == 'i' - && ! INSN_DELETED_P (insn)) + if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') { mark_jump_label (PATTERN (insn), insn, cross_jump); - if (GET_CODE (insn) == JUMP_INSN) + if (! INSN_DELETED_P (insn) && GET_CODE (insn) == JUMP_INSN) { if (JUMP_LABEL (insn) != 0 && simplejump_p (insn)) { @@ -3380,7 +3379,8 @@ mark_jump_label (x, insn, cross_jump) } XEXP (x, 0) = label; - ++LABEL_NUSES (label); + if (! insn || ! INSN_DELETED_P (insn)) + ++LABEL_NUSES (label); if (insn) { @@ -3417,12 +3417,13 @@ mark_jump_label (x, insn, cross_jump) ADDR_DIFF_VEC. Don't set the JUMP_LABEL of a vector. */ case ADDR_VEC: case ADDR_DIFF_VEC: - { - int eltnum = code == ADDR_DIFF_VEC ? 1 : 0; + if (! INSN_DELETED_P (insn)) + { + int eltnum = code == ADDR_DIFF_VEC ? 1 : 0; - for (i = 0; i < XVECLEN (x, eltnum); i++) - mark_jump_label (XVECEXP (x, eltnum, i), NULL_RTX, cross_jump); - } + for (i = 0; i < XVECLEN (x, eltnum); i++) + mark_jump_label (XVECEXP (x, eltnum, i), NULL_RTX, cross_jump); + } return; default: |