You are applying PATTERN to an INSN_LIST.
diff --git a/gcc/ext-dce.cc b/gcc/ext-dce.cc
index 52032b50951..4523654538c 100644
--- a/gcc/ext-dce.cc
+++ b/gcc/ext-dce.cc
@@ -122,10 +122,9 @@ safe_for_live_propagation (rtx_code code)
optimziation phase during use handling will be. */
static void
-ext_dce_process_sets (rtx insn, bitmap livenow, bitmap live_tmp)
+ext_dce_process_sets (rtx insn, rtx pat, bitmap livenow, bitmap live_tmp)
{
subrtx_iterator::array_type array;
- rtx pat = PATTERN (insn);
FOR_EACH_SUBRTX (iter, array, pat, NONCONST)
{
const_rtx x = *iter;
@@ -377,7 +376,7 @@ binop_implies_op2_fully_live (rtx_code code)
eliminated in CHANGED_PSEUDOS. */
static void
-ext_dce_process_uses (rtx insn, bitmap livenow, bitmap live_tmp,
+ext_dce_process_uses (rtx insn, rtx pat, bitmap livenow, bitmap live_tmp,
bool modify, bitmap changed_pseudos)
{
/* A nonlocal goto implicitly uses the frame pointer. */
@@ -389,7 +388,6 @@ ext_dce_process_uses (rtx insn, bitmap livenow, bitmap
live_tmp,
}
subrtx_var_iterator::array_type array_var;
- rtx pat = PATTERN (insn);
FOR_EACH_SUBRTX_VAR (iter, array_var, pat, NONCONST)
{
/* An EXPR_LIST (from call fusage) ends in NULL_RTX. */
@@ -640,15 +638,16 @@ ext_dce_process_bb (basic_block bb, bitmap livenow,
bitmap live_tmp = BITMAP_ALLOC (NULL);
/* First process any sets/clobbers in INSN. */
- ext_dce_process_sets (insn, livenow, live_tmp);
+ ext_dce_process_sets (insn, PATTERN (insn), livenow, live_tmp);
/* CALL_INSNs need processing their fusage data. */
if (GET_CODE (insn) == CALL_INSN)
- ext_dce_process_sets (CALL_INSN_FUNCTION_USAGE (insn),
+ ext_dce_process_sets (insn, CALL_INSN_FUNCTION_USAGE (insn),
livenow, live_tmp);
/* And now uses, optimizing away SIGN/ZERO extensions as we go. */
- ext_dce_process_uses (insn, livenow, live_tmp, modify, changed_pseudos);
+ ext_dce_process_uses (insn, PATTERN (insn), livenow, live_tmp, modify,
+ changed_pseudos);
/* And process fusage data for the use as well. */
if (GET_CODE (insn) == CALL_INSN)
@@ -663,7 +662,7 @@ ext_dce_process_bb (basic_block bb, bitmap livenow,
if (global_regs[i])
bitmap_set_range (livenow, i * 4, 4);
- ext_dce_process_uses (CALL_INSN_FUNCTION_USAGE (insn),
+ ext_dce_process_uses (insn, CALL_INSN_FUNCTION_USAGE (insn),
livenow, live_tmp, modify, changed_pseudos);
}