将常量整数转换为Value* LLVM

4

我正在尝试创建一个IR指令

store i32 0, i32* %3, align 4

我正在使用这种方法

StoreInst *CreateAlignedStore(Value *Val, Value *Ptr, unsigned Align, bool isVolatile = false)

创建指令。由于第一个参数需要传递 Value*,因此我需要将 0 转换为 Value*

你能帮我完成这个任务吗?

1个回答

5
您可以使用llvm::Constant来处理*val,llvm Constant继承自Value。创建表示0的Constant的一种方法是:
llvm::ConstantInt::get(llvm::Type::getInt64Ty(Ctx), 0)

在您插入StoreInst的函数的上下文中,Ctx是上下文。


IRBuilder 中还有一个方便的 getInt32 方法,可以精确地执行此操作。 - user2512323
使用了IRBuilder,它很好用。非常感谢。不过我想学习一下上下文的东西,因为我还不太明白。如何获取Ctx的值,上下文又是什么意思?再次感谢你们两个。 - Tasmia Rahman
您可以使用getContext()函数从Function、BasicBlock或Module中获取Context。关于Context的解释,请查看llvm文档http://llvm.org/doxygen/classllvm_1_1LLVMContext.html。 - Anahit Hayrapetyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接