在 LLVM [C++] 中将 Int 转换为 APInt
Converting Int to APInt in LLVM [C++]
我试图通过 LLVM 构建语言(因为我必须这样做),但停留在简单的开始。我试图创建 int 常量,但是:
- ConstantInt::get 方法需要 APInt class
- APInt class 没有从常规 int 到自身的有效转换
这是我的尝试:
Value * val = ConstantInt::get(Context, APInt(m_Lexer.numVal())
但答案是,没有 APInt 构造函数接受 32 位有符号整数。
我的问题很简单:
- 我做错了什么或者什么是有效的方法?
- LLVM c++ 库的某种文档在哪里,它不是很旧,也有一些注释?
我试过本教程,但它只适用于双打,但我需要整数:https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html
ConstantInt::get
的第一个参数是 llvm Type
而不是 context
。试试这个
Value * val = ConstantInt::get(Type::getInt32Ty(Context), m_Lexer.numVal(), true);
其中最后一个布尔参数确定 val
表示有符号还是无符号 i32
我试图通过 LLVM 构建语言(因为我必须这样做),但停留在简单的开始。我试图创建 int 常量,但是:
- ConstantInt::get 方法需要 APInt class
- APInt class 没有从常规 int 到自身的有效转换
这是我的尝试:
Value * val = ConstantInt::get(Context, APInt(m_Lexer.numVal())
但答案是,没有 APInt 构造函数接受 32 位有符号整数。
我的问题很简单:
- 我做错了什么或者什么是有效的方法?
- LLVM c++ 库的某种文档在哪里,它不是很旧,也有一些注释?
我试过本教程,但它只适用于双打,但我需要整数:https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html
ConstantInt::get
的第一个参数是 llvm Type
而不是 context
。试试这个
Value * val = ConstantInt::get(Type::getInt32Ty(Context), m_Lexer.numVal(), true);
其中最后一个布尔参数确定 val
表示有符号还是无符号 i32