如何解决在LLVM中将Int转换为APInt [C ++]
我试图通过LLVM构建语言(因为我只是必须这样做),但一直停留在简单的开始。我正在尝试创建int常量,但是:- ConstantInt :: get方法需要APInt类
- APInt类没有从常规int到其自身的有效转换
这是我的尝试:
Value * val = ConstantInt::get(Context,APInt(m_Lexer.numVal())
但是答案是,没有APInt构造函数接受32位带符号的int。
我的问题很简单:
- 我做错了什么或有效的方式是什么?
- 哪里有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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。