[LLVMdev] how to change one operand of an LLVM instruction
Tanya Lattner
lattner at apple.com
Tue Sep 8 14:57:44 PDT 2009
On Sep 8, 2009, at 2:46 PM, Susan Horwitz wrote:
> I am trying to implement node splitting to transform irreducible
> CFGS to
> reducible ones. This means making copies of some basic blocks,
> which in
> turn means making copies of individual instructions. I can use the
> "clone" function to make an exact copy, but then I need to change some
> operands. For example, when I copy
> %1 = ...
> %2 = add %1, 5
>
> I get
> %3 = ...
> %4 = add %1, 5
>
> and I need to change the %1 operand in the copy to be %3.
>
> The only way I see to do this is to create a new instruction instead
> of a
> clone, using a big switch on the opcode (since different instructions'
> constructors have different parameters).
>
> Anyone know of an easier way to do this?
>
Are you using CloneBasicBlock? If so, you should pass it a ValueMap.
You can then iterate over the instructions in the new basicblock and
update the instruction operand references.
Check out CloneFunction.cpp for some examples.
-Tanya
> _______________________________________________
> 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/20090908/d2a47689/attachment.html>
More information about the llvm-dev
mailing list