On Sat, Feb 24, 2018 at 3:30 PM, Christopher Li <sparse@xxxxxxxxxxx> wrote: > On Sat, Feb 24, 2018 at 2:00 PM, Luc Van Oostenryck > <luc.vanoostenryck@xxxxxxxxx> wrote: >> Hi Chris, >> >> I saw that a few patches have been pushed on the head, >> including the two I disagreed with and which I explained *why* >> they where wrong. Well. >> >> Meanwhile, I see some regressions with the current head. >> For example some simple programs like: >> void a(void) >> { >> int b[] = { 8 }; >> int c; >> for (;;) >> b[c] = b[0]; >> } >> now crashes when used with test-linearize. > > Oops, reproduced. Thanks for the report. > > I see pseudo->ident polluted by pseudo->size. > Separate them out of the union seems to fix the crash. Right, that is the exactly the course. I found the place that use the ident without limit to PSEUDO_VAL. found_dominator: br = delete_last_instruction(&parent->insns); phi = alloc_phi(parent, one->target, one->size); phi->ident = phi->ident ? : one->target->ident; <================= add_instruction(&parent->insns, br); use_pseudo(insn, phi, add_pseudo(dominators, phi)); } END_FOR_EACH_PTR(parent); So separate the "ident" and "size" in the union should fix this crash. A little bit too aggressive on saving space. Chris -- 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