12

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

我认为它必须沿着

ConstantInt consVal = new ConstantInt(something here).

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

4

4 回答 4

11

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

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

于 2013-04-27T01:24:47.230 回答
6

制作一个 32 位整数:

llvm::ConstantInt::get(context, llvm::APInt(/*nbits*/32, value, /*bool*/is_signed));
于 2014-03-23T07:10:08.383 回答
1

创建一个32-bit整数常量:

llvm::Type *i32_type = llvm::IntegerType::getInt32Ty(llvm_context);
llvm::Constant *i32_val = llvm::ConstantInt::get(i32_type, -1/*value*/, true);
于 2017-06-23T09:57:36.160 回答
1
ConstantInt* const_int32  = ConstantInt::get( Context , APInt(32, StringRef("10"), 10));

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

于 2017-06-28T01:52:51.920 回答