convert_load_instrcution() & rewrite_load_instruction() remove a load instruction and as such should retrigger optimization of symbols. Do this by setting REPEAT_SYMBOL_CLEANUP at the end of these two functions. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- flow.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flow.c b/flow.c index 9d27e4307..f928c2684 100644 --- a/flow.c +++ b/flow.c @@ -306,6 +306,7 @@ void convert_load_instruction(struct instruction *insn, pseudo_t src) { convert_instruction_target(insn, src); kill_instruction(insn); + repeat_phase |= REPEAT_SYMBOL_CLEANUP; } static int overlapping_memop(struct instruction *a, struct instruction *b) @@ -459,7 +460,7 @@ void rewrite_load_instruction(struct instruction *insn, struct pseudo_list *domi FOR_EACH_PTR(dominators, phi) { kill_instruction(phi->def); } END_FOR_EACH_PTR(phi); - return; + goto end; complex_phi: /* We leave symbol pseudos with a bogus usage list here */ @@ -467,6 +468,9 @@ complex_phi: kill_use(&insn->src); insn->opcode = OP_PHI; insn->phi_list = dominators; + +end: + repeat_phase |= REPEAT_SYMBOL_CLEANUP; } static int find_dominating_stores(pseudo_t pseudo, struct instruction *insn, -- 2.16.2 -- 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