我正在使用LLVM 柯南 package来构建我的编译器,到目前为止它已经很好了,直到我一直在尝试使用llvm::sys::getDefaultTargetTriple和llvm::TargetRegistry::lookupTarget 。 我得到了对两者的未定义引用。 两者似乎都来自 LLVM ...
我正在使用LLVM 柯南 package来构建我的编译器,到目前为止它已经很好了,直到我一直在尝试使用llvm::sys::getDefaultTargetTriple和llvm::TargetRegistry::lookupTarget 。 我得到了对两者的未定义引用。 两者似乎都来自 LLVM ...
我使用“builder->CreateSub”和“builder->CreateAdd”来生成 LLVM-IR 用于减法和加法。 但是,LLVM (lli) 无法编译/解释生成的 IR(如下所示) 这给出了错误(在ptr上): ...
我正在关注使用 LLVM 制作 JIT 编译器的教程(代码如下所示,并且使用了最新版本的 LLVM)。 除了这一行之外,一切正常(如果我评论这个 function,代码编译): 这给出了以下错误: 代码 ...
我目前正在编写一个依赖于另一个库的软件,该库大量使用 LLVMs RTTI 系统。 我无法更改所述库的 API,它迫使我在几种类型及其子类型上实现非常大的 if-else 语句。 通常我会在 switch 语句中使用,但显然使用 LLVM 的dyn_cast<>()是不可能的。 下面是我 ...
我正在尝试用我的编程语言实现一个模块系统。 我已经阅读了文档( https://llvm.org/doxygen/classllvm_1_1Linker.html )并且 linkModules() ZC1C425268E68385D1AB5074C1 正是 A 需要的。 链接两个模块时,我收到一条 ...
最近我偶然发现了这篇文章: Get a function declaration from another llvm::Module 在评论中,@arrowd 说了一些关于 getGlobalContext() 的内容。 我非常有兴趣找到有关此 function 的更多信息,因为我想在不依赖于上下 ...
我正在做一个项目,并希望使用 LLVM 的新 API 和 LLVM::PassManager 的专业化。 我尝试查看 llc 的代码,但它使用的是旧版 PassManager。 有没有办法用新的 API 做到这一点? ...
我正在努力弄清楚如何使用 LLVM c++ API 分配数组元素。 考虑这个 C 代码:int main() { int aa[68]; aa[56] = 7; return 0; } 使用clang -S -emit-llvm main.c 我得到以下 IR(为简单 ...
我正在寻找一种使用 LLVM C++ api 转换类型的简单方法。 我要避免的是无休止的嵌套 if-else 检查什么会选择正确的 IR cast 指令。 这是我想开始工作的示例代码: 有没有办法在不检查类型的情况下转换类型? 显然,从结构到浮点的类型转换是愚蠢的,应该会失败,但我怎样才能简单地选 ...
我一直在尝试在 LLVM 中编写 machineFunctionPass 以发出与每个 LLVM IR 指令对应的程序集。 我已经尝试关注此邮件列表线程,但无法使其正常工作,并且没有任何输出。 我也尝试按照本教程进行操作,但没有输出任何内容,并且必须更改一些 header 文件才能使其编译。 我已 ...
如何在 LLVM IR C++ API 中创建匿名全局变量? 我可以创建一个命名的全局变量,如下所示:GlobalVariable *createGlobalVariable( Module *module, Type *type, std::string name ) { ...
我初始化了所需的架构,但是当我尝试获取目标失败时,我尝试在 C api 中进行操作,它工作正常。 我在 Windows 上使用 clang 进行编译,并链接到我自己编译的 llvm 版本 15.0.0git,我还尝试了预编译版本,但没有成功。 My entire LLVM code is wri ...
我想知道是否有任何方法可以只导入 LLVM 中的特定符号。 看看节点中的这个 javascript 示例:import mySymbol from 'some/path.mylang' 我已经在 stackoverflow 上看到了这篇文章: LLVM ir 如何导入其他模块? 但这确实不是我想要 ...
通过使用opt ,我们可以运行自定义 pass,或者在 foo.ll 文件上运行 -O1 -O2 -O3 pass 管道,但是这一切都发生在命令行上,并且 IR 是文件形式。这不利于在您自己的项目中以内存形式对IR进行一些优化(每个IR文件都是内存形式的模块)。 通过 opt 的方式,就像这样: ...
我正在学习 LLVM 核心库。 我知道 getArgOperand(i) 会以 llvm::Value* 的形式返回可调用指令的第 i 个操作数。 但是 getOperand() 的目的是什么? 在下面的代码中,这两个函数似乎具有相似的功能(我不确定)。 我在以下官方文档中找不到详细说明。 htt ...
我正在尝试使用带有以下代码的 Clang Compiler FrontEnd 编译测试文件: 使用以下 CMakeLists.txt: 代码编译正常但无法读取target_executable ,导致以下错误: 这是读/写权限错误吗? ...
我正在按照 Kaleidoscope 的示例编写一个最小的 IR 文件解释器。 它接受一个命令行参数,即.ll 文件的路径,并执行文件中的main function。 但是当我在 IR 文件上测试它时,它失败了: 断言失败:(KV.second.getFlags() & ~WeakFlag ...
我想将 llvm 模块保存到文件xxx.ll 也许代码就像 llvm::module M; ... ofstream << M; llvm中有给定的功能吗? 或者我们需要对M做一些转换然后我们可以使用ofstream 我正在使用 llvm 14 ...
尝试使用 LLVM 库编译和链接程序时,我收到错误unresolved external symbol crc32 。 奇怪的是,这并不总是发生。 前几天才开始。 操作系统: 编译器: LLVM 版本: https ://github.com/llvm/llvm-project/arch ...
我有一个无法修改的输入位码文件。 假设我正在查看一个特定的函数foo 。 我想内联foo()进行的所有调用: bar() -> baz()和fez()等等。 也就是说,我希望结果输出在foo()中没有调用指令。 如何编写可靠地执行此功能内联的 LLVM 通行证? 我查看了此处描述的解决方案。 ...