[LLVMdev] Fwd: Updating PHI for Instruction Domination?
ryta1203 at gmail.com
Thu Feb 2 12:23:21 PST 2012
By manually I meant create new value names for the F PHI in Header, and
create copy PHIs for each of those values in F that take the corresponding
value from Latch and zero (or something else) from H.
---------- Forwarded message ----------
From: Ryan Taylor <ryta1203 at gmail.com>
Date: Thu, Feb 2, 2012 at 12:08 PM
Subject: Updating PHI for Instruction Domination?
To: llvmdev at cs.uiuc.edu
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?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev