LLVM中间表示
我目前正在制作一个输出裸 LLVM-IR 指令并实现可变参数函数调用的编译器。我定义了一个 println 函数,它接受(格式)字符串和变量数量...
我对 llvm 很陌生,只在这里完成了在线教程:http://llvm.org/docs/tutorial/LangImpl1.html 现在我想做自己的小语言,但遇到了一些问题。 我想解析一下这个: ...
我目前正在研究生成 LLVM-IR 的编程语言编译器。我没有使用任何库进行发射,所以我只是将指令写入文件。问题是可变变量...
如何将 opencl-kernel-file(.cl) 编译为 LLVM IR
这个问题与LLVM/clang有关。我已经知道如何使用 OpenCL API(clBuildProgram() 和 clGetProgramBuildInfo())编译 opencl-kernel-file.cl。 我的问题是: 如何编译opencl-
我创建了 HowToUseJIT.cpp 的修改版本(llvm 版本 11.x),它使用 IRBuilder 类构建一个调用共享对象文件中定义的外部函数。 这个例子运行良好(o...
`ConstantInt::getTrue (LLVMContext &Context)` 和 `ConstantInt::getTrue (Type *Ty)` 有什么区别?
我在llvm::ConstantInt文档中发现了2个API: 静态 ConstantInt *ConstantInt::getTrue (LLVMContext &Context): https://llvm.org/doxygen/classllvm_1_1ConstantInt.html#
我正在使用 SAW 验证一些 Rust 代码。 SAW 要求您编译为 LLVM 位代码,然后可以导入并验证。我知道您可以使用 --emit=llvm-bc 标志生成位码...
在 mem2reg 优化之前,phi 节点是否存在于 LLVM IR 中?
在LLVM IR中,phi节点是SSA(静态单赋值)形式的关键组成部分,用于表示程序中的控制流。据我所知,LLVM 中的 mem2reg 优化过程用于
我是 LLVM 的新手,目前正在从事涉及内存依赖分析的工作。阅读文档后,我发现术语“clobber”使用得相当频繁。现在,我确实明白什么是被破坏了
mem2reg 是 llvm 中重要的优化过程。我想了解这种优化是如何工作的,但没有找到好的文章、书籍、教程等。 我找到了这两个链接: 破损或
如何在 clang llvm LTO 创建的目标文件中重新定义符号?似乎是“LLVM IR bitcode”文件
有一个旧项目需要在构建过程中重新定义符号。我想启用-flto,但现在似乎无法重新定义符号。 echo "int foo(){return 0;}" > foo.c 叮当...
我目前正在用 python 构建我的第一个编译器。我已经完成了词法分析器、解析器和分析器。我打算使用 llvmlite 库来发出 ir。我遇到麻烦了
创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,我能找到的唯一示例是(如何将 llvm::outs() 重定向到文件?) raw_ostream *输出...
我知道解析器生成的 AST 用于在前端生成 IR。 我想知道如何解析 AST,然后将其转换为 IR(问题汇编或位码), AST 是一棵树,什么...
我试图从指令 '%6 = load i32* %2,align 4,!dbg !135' 获取 %2,但函数 getOperand(0)->getName() 返回空字符串。怎么解决这个问题?
我目前正在使用自定义加载指令扩展 RISC-V 内核。对于这个问题,细节并不重要。它的功能行为类似于正常的加载指令,并且应该使用相同的
MLIR 允许创建常数向量,例如 %1 = arith.constantense<[1.1 2.2 3.3]> : 向量<3xf32> 但是如何使用 OpBuilder 创建这个 mlir 操作呢? 我尝试使用类似 t...
我正在尝试将我的 llvm 通证添加到 Rustc 中。 Rustc 有一个编译选项 -C Passs=val,我们可以在其中添加额外的 LLVM 传递来运行。然而,根据我的尝试,此选项只能在
如何在启用不透明指针的情况下在 LLVM 17 中获取指针级别?
根据 llvm 不透明指针文档,自 LLVM 17 起仅支持不透明指针,这意味着不再可能通过