gcc/ * regcprop.c (cprop_find_used_regs_1): Delete. (cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx.
Index: gcc/regcprop.c =================================================================== --- gcc/regcprop.c 2014-08-03 11:25:29.603148851 +0100 +++ gcc/regcprop.c 2014-08-03 11:25:29.878151570 +0100 @@ -702,33 +702,28 @@ apply_debug_insn_changes (struct value_d apply_change_group (); } -/* Called via for_each_rtx, for all used registers in a real - insn apply DEBUG_INSN changes that change registers to the - used register. */ - -static int -cprop_find_used_regs_1 (rtx *loc, void *data) -{ - if (REG_P (*loc)) - { - struct value_data *vd = (struct value_data *) data; - if (vd->e[REGNO (*loc)].debug_insn_changes) - { - apply_debug_insn_changes (vd, REGNO (*loc)); - free_debug_insn_changes (vd, REGNO (*loc)); - } - } - return 0; -} - /* Called via note_uses, for all used registers in a real insn apply DEBUG_INSN changes that change registers to the used registers. */ static void -cprop_find_used_regs (rtx *loc, void *vd) +cprop_find_used_regs (rtx *loc, void *data) { - for_each_rtx (loc, cprop_find_used_regs_1, vd); + struct value_data *const vd = (struct value_data *) data; + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, *loc, NONCONST) + { + const_rtx x = *iter; + if (REG_P (x)) + { + unsigned int regno = REGNO (x); + if (vd->e[regno].debug_insn_changes) + { + apply_debug_insn_changes (vd, regno); + free_debug_insn_changes (vd, regno); + } + } + } } /* Perform the forward copy propagation on basic block BB. */