[LLVMdev] PHINode in entry block

John Criswell jtcriswel at gmail.com
Tue Jul 15 08:14:44 PDT 2014


On 7/15/14, 9:55 AM, William Moses wrote:
> All,
>
> Consider the case where the entry block to a function acts like a loop 
> (e.g. it ends with a conditional break to itself and somewhere else). 
> How would one create a PHINode (representing an index perhaps) which 
> has a constant index (say 0) when entering the function, and 
> (oldval+1) when looping.
>
> I understand how to do this if the loop were not in the entry block 
> (by simply using node->addIncoming(ConstantInt(...), entry), 
> node->addIncoming(builder.CreateAdd(node,...),loopBlock) ).
>
> My question is how would one do this using the C++ API when there is 
> no predecessor since it is the entry block.

An entry block cannot have any phi-nodes.  If you have a function that 
starts with a loop, then your entry block will be a single unconditional 
branch to a basic block which is the first basic block of the loop.

Regards,

John Criswell

>
> Thanks,
> Billy Moses
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140715/a32c0532/attachment.html>


More information about the llvm-dev mailing list