aboutsummaryrefslogtreecommitdiff
path: root/gcc/ssa-dce.c
diff options
context:
space:
mode:
authorJose Renau <renau@cs.uiuc.edu>2002-12-26 18:15:56 +0000
committerJeff Law <law@gcc.gnu.org>2002-12-26 11:15:56 -0700
commitecd4a73b20577345fc2703e7e998b30b68bf75d6 (patch)
tree9a794edf33f5d0d6572f70b05a106554945370ab /gcc/ssa-dce.c
parentb17bb466ac97a3a26568856d8cc2ea5482c92229 (diff)
downloadgcc-ecd4a73b20577345fc2703e7e998b30b68bf75d6.zip
gcc-ecd4a73b20577345fc2703e7e998b30b68bf75d6.tar.gz
gcc-ecd4a73b20577345fc2703e7e998b30b68bf75d6.tar.bz2
ssa-dce.c (EXECUTE_IF_UNNECESSARY): Verify INSN is an INSN_P before checking to see if it is dead.
* ssa-dce.c (EXECUTE_IF_UNNECESSARY): Verify INSN is an INSN_P before checking to see if it is dead. (mark_all_insn_unnecessary): Similarly. (ssa_eliminate_dead_code): Similarly. * rtl.h (struct rtx_def): Update comments for in_struct usage in dead code elimination pass. (INSN_DEAD_CODE_P): Allow JUMP_INSN and CALL_INSN as well. From-SVN: r60520
Diffstat (limited to 'gcc/ssa-dce.c')
-rw-r--r--gcc/ssa-dce.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/gcc/ssa-dce.c b/gcc/ssa-dce.c
index 3584ca2..6ccc222 100644
--- a/gcc/ssa-dce.c
+++ b/gcc/ssa-dce.c
@@ -135,10 +135,12 @@ static void mark_all_insn_unnecessary
rtx INSN; \
\
for (INSN = get_insns (); INSN != NULL_RTX; INSN = NEXT_INSN (INSN)) \
- if (INSN_DEAD_CODE_P (INSN)) { \
- CODE; \
- } \
+ if (INSN_P (insn) && INSN_DEAD_CODE_P (INSN)) \
+ { \
+ CODE; \
+ } \
}
+
/* Find the label beginning block BB. */
static rtx find_block_label
PARAMS ((basic_block bb));
@@ -448,8 +450,11 @@ static void
mark_all_insn_unnecessary ()
{
rtx insn;
- for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- KILL_INSN (insn);
+ for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn)) {
+ if (INSN_P (insn))
+ KILL_INSN (insn);
+ }
+
}
/* Find the label beginning block BB, adding one if necessary. */
@@ -522,7 +527,7 @@ ssa_eliminate_dead_code ()
/* Find inherently necessary instructions. */
for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- if (find_inherently_necessary (insn))
+ if (find_inherently_necessary (insn) && INSN_P (insn))
{
RESURRECT_INSN (insn);
VARRAY_PUSH_RTX (unprocessed_instructions, insn);
@@ -725,8 +730,11 @@ ssa_eliminate_dead_code ()
}
}
/* Release allocated memory. */
- for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- RESURRECT_INSN (insn);
+ for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn)) {
+ if (INSN_P (insn))
+ RESURRECT_INSN (insn);
+ }
+
if (VARRAY_ACTIVE_SIZE (unprocessed_instructions) != 0)
abort ();
control_dependent_block_to_edge_map_free (cdbte);