At two places in the code, DELETE_PTR() is called on soem list but PACK_PTR_LIST() is not called at the end of the loop. This potentially leave empty ptrlist 'blocks' which are not handled by the usual list walking macros. No concrete situation have been found where a real problem occurs but better be safe than sorry and call PACK_PTR_LIST() here too. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- cse.c | 1 + evaluate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/cse.c b/cse.c index e8fbe344..71325a74 100644 --- a/cse.c +++ b/cse.c @@ -260,6 +260,7 @@ static struct instruction * cse_one_instruction(struct instruction *insn, struct if (pu->insn == insn) DELETE_CURRENT_PTR(pu); } END_FOR_EACH_PTR(pu); + PACK_PTR_LIST(&phi->users); } END_FOR_EACH_PTR(phi); } diff --git a/evaluate.c b/evaluate.c index e350c0c0..d1383902 100644 --- a/evaluate.c +++ b/evaluate.c @@ -2521,6 +2521,7 @@ found: excess(e, lclass & TYPE_PTR ? "array" : "struct or union"); } END_FOR_EACH_PTR(e); + PACK_PTR_LIST(&expr->expr_list); convert_designators(last); expr->ctype = ctype; -- 2.10.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