[LLVMdev] How to change the type of an Instruction?

Nick Lewycky nlewycky at google.com
Fri Jan 21 14:25:08 PST 2011


On 21 January 2011 12:56, Douglas do Couto Teixeira <
douglasdocouto at gmail.com> wrote:

> Hello guys,
>
> I wonder how I can change the type of an integer variable. For instance,
> given the instruction "%3 = add i32 %1, %2" I would like to alter the
> instruction to "%3 = add i16 %1, %2". Is there any way to do this?
>

No. Instead you create a new Instruction, in this case with
BinaryOperator::CreateAdd, then OldInst->replaceAllUsesWith(NewInst) to
update all the users, then OldInst->eraseFromParent() since it's now dead
code.

Also, all values have types immutably assigned at creation, so you'll need
to insert casts (trunc instructions in your case) to cast %1 and %2 from i32
to i16 for the smaller add.

Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110121/91e43425/attachment.html>


More information about the llvm-dev mailing list