From ecd4a73b20577345fc2703e7e998b30b68bf75d6 Mon Sep 17 00:00:00 2001 From: Jose Renau Date: Thu, 26 Dec 2002 18:15:56 +0000 Subject: 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 --- gcc/ssa-dce.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'gcc/ssa-dce.c') 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); -- cgit v1.1