diff options
author | Jose Renau <renau@cs.uiuc.edu> | 2002-12-26 18:15:56 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2002-12-26 11:15:56 -0700 |
commit | ecd4a73b20577345fc2703e7e998b30b68bf75d6 (patch) | |
tree | 9a794edf33f5d0d6572f70b05a106554945370ab /gcc/ssa-dce.c | |
parent | b17bb466ac97a3a26568856d8cc2ea5482c92229 (diff) | |
download | gcc-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.c | 24 |
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); |