首页 > 解决方案 > 在 LLVM [C++] 中将 Int 转换为 APInt

问题描述

我试图通过 LLVM 构建语言(因为我必须这样做),但被困在简单的开始。我试图制作 int 常量,但是:

这是我的尝试:

Value * val = ConstantInt::get(Context, APInt(m_Lexer.numVal())

但答案是,没有接受 32 位签名 int 的 APInt 构造函数。

我的问题很简单:

我尝试通过本教程工作,但它仅适用于双打,但我需要整数:https ://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html

标签: c++llvm

解决方案


第一个参数ConstantInt::get是 llvmType而不是context. 尝试这个

Value * val = ConstantInt::get(Type::getInt32Ty(Context), m_Lexer.numVal(), true);

最后一个布尔参数确定是否val代表有符号或无符号i32


推荐阅读