[LLVMdev] Self-referential instruction from jump threading

Duncan Sands baldrick at free.fr
Mon Oct 22 02:40:50 PDT 2012

Hi Hal,

> After investigating PR14133, I've discovered that jump threading can output self-referential instructions:
> %inc.us = add nsw i32 %inc.us, 1

such instructions are valid in unreachable basic blocks.

> At least in the test case for that bug report, the relevant code is later deleted (perhaps it is unreachable), and so this does not cause a problem. Unfortunately, when vectorization is enabled, this instruction causes BBVectorize to hang. Should I make BBVectorize ignore this kind of thing, on the assumption that it occurs only in unreachable (or otherwise dead) code, or should this be fixed at the source (in jump threading in this case)?

All such instructions are dead, as they always live in unreachable basic blocks,
so there is no point in trying to optimize them.

Ciao, Duncan.

More information about the llvm-dev mailing list