如何在LLVM中创建ConstantInt?

时间:2013-04-27 00:05:59

标签: llvm

我不确定如何在LLVM中创建ConstantInt-我知道我想要创建的数字,但我不确定如何使ConstantInt表示该数字;我似乎无法在文档中找到我需要的构造函数。

我认为它必须符合

的要求
ConstantInt consVal = new ConstantInt(something here).

我知道我希望它是一个int类型,我知道我的价值......我只是想创建一个数字!

4 个答案:

答案 0 :(得分:7)

LLVM中的大多数内容都是通过静态方法调用而不是直接使用构造函数来创建的。一个原因是可以返回现有对象而不是创建新实例。

static members of ConstantInt有许多创建方法。您可能对get (Type *Ty, uint64_t V, bool isSigned=false)最感兴趣,如果您还没有整数类型,IntegerType::get (LLVMContext &C, unsigned NumBits)

答案 1 :(得分:4)

制作一个32位整数:

llvm::ConstantInt::get(context, llvm::APInt(/*nbits*/32, value, /*bool*/is_signed));

答案 2 :(得分:1)

创建32-bit整数常量:

llvm::Type *i32_type = llvm::IntegerType::getInt32Ty(llvm_context);
llvm::Constant *i32_val = llvm::ConstantInt::get(i32_type, -1/*value*/, true);

答案 3 :(得分:1)

ConstantInt* const_int32  = ConstantInt::get( Context , APInt(32, StringRef("10"), 10));

其中,     APInt(32,StringRef(“10”),10); 从字符串“10”获取基数为10的int值。