[LLVMdev] Regarding BasicBlock Cloning
tarun at cse.iitb.ac.in
Sat Apr 16 17:17:09 PDT 2011
Thanks John I will try it...
On Sun, Apr 17, 2011 at 5:39 AM, John Criswell <criswell at illinois.edu>wrote:
> On 4/16/11 7:01 PM, tarun agrawal wrote:
> The clone llvm:CloneBasicBlock copies the phi function in the replicated
> basic block from the original basic block.
> After you clone the basic block, you can probably replace the phi
> instruction with another value of your choice. If you're adding variables,
> you'll probably want to create them as allocas and use loads and stores to
> access them. In such as case, you'd replace the phi in the new BasicBlock
> with a load of your new variable.
> Once all your basic blocks are in place and all the terminator instructions
> are modified so that your control-flow graph is the way you want it to be,
> you can run mem2reg to change your alloca variables into real SSA variables
> with phi-nodes in your new basic blocks.
> -- John T.
> I don't want the copy of phi in relplicated block. For now I am creating
> .bc file with -O0 option so that it doesn't generate phi function in first
> place. Is this a good approach or there are some other function available
> for it.
> On Sun, Apr 17, 2011 at 5:22 AM, Eli Friedman <eli.friedman at gmail.com>wrote:
>> On Sat, Apr 16, 2011 at 4:32 PM, tarun agrawal <tarun at cse.iitb.ac.in>
>> > Hi,
>> > I am writing a pass for constant propagation using graph restructuring (
>> > code duplication). I am facing following difficulties..
>> > 1) I need to replicate the basic block but without phi function in the
>> > replicated block. How can I do this.
>> > 2) I need to insert that basic block after and before some particular
>> > block.
>> You probably want to use llvm::CloneBasicBlock from
>> Transforms/Utils/Cloning.h to get a cloned version of a block.
>> BasicBlock::splitBasicBlock might be useful as well.
> LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev