[LLVMdev] Updating PHI for Instruction Domination?

Ryan Taylor ryta1203 at gmail.com
Thu Feb 2 12:08:09 PST 2012

So I have a loop with two blocks, a header (which points to return and
latch) and a latch (which points to return and header). I have inserted a
few new blocks, called H and F.

Header now points to H and latch. Latch now points to F. H points to F. F
points to Header and return.

The PHI Nodes have been updated in Header accordingly, now coming from the
preheader and F (instead of latch).

My issue is this: The values in the PHI instruction in the Header for F are
actually defined in Latch and so if you follow the path: Header->H->F,
there becomes an issue with "Instruction does not dominate all uses" (since
the Header PHI is getting values defined in Latch coming from F but never
going to Latch) since they haven't been defined in that path.

My question is: Is there some call where I can rearrange the basic blocks
and call some functions/utils that solve this issue? Or do I have to
manually solve this myself?

Thanks again.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120202/7e093605/attachment.html>

More information about the llvm-dev mailing list