--- mem2reg.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mem2reg.c b/mem2reg.c index 4671d4710..d13af1dd2 100644 --- a/mem2reg.c +++ b/mem2reg.c @@ -251,6 +251,17 @@ static void kill_dominated_stores(pseudo_t pseudo, struct instruction *insn, } END_FOR_EACH_PTR(parent); } +static void kill_pseudo_dominated_stores(pseudo_t pseudo, int local) +{ + struct pseudo_user *pu; + + FOR_EACH_PTR(pseudo->users, pu) { + struct instruction *insn = pu->insn; + if (insn->opcode == OP_STORE) + kill_dominated_stores(pseudo, insn, ++bb_generation, insn->bb, local, 0); + } END_FOR_EACH_PTR(pu); +} + static unsigned long externaly_visible(struct symbol *sym, unsigned long mod) { @@ -324,11 +335,7 @@ static void promote_symbol(struct entrypoint *ep, struct symbol *sym) * If we couldn't take the shortcut, see if we can at least kill some * of them.. */ - FOR_EACH_PTR(pseudo->users, pu) { - struct instruction *insn = pu->insn; - if (insn->opcode == OP_STORE) - kill_dominated_stores(pseudo, insn, ++bb_generation, insn->bb, !mod, 0); - } END_FOR_EACH_PTR(pu); + kill_pseudo_dominated_stores(pseudo, !mod); if (!(mod & (MOD_NONLOCAL | MOD_STATIC))) { struct basic_block *bb; -- 2.14.0 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html