llvm-ir 相关问题

LLVM中间表示

如何获取 LLVM IR 指令的文本表示?

如果 I 是 llvm::Instruction 类型,我们可以通过 errs() 以人类可读的形式(文本表示)打印出相同的内容 << I; I want the assign the exact same representation to a std::string ...

回答 3 投票 0

使用 C-API 转储带有值名称的 LLVMModule

我目前正在使用 Rust 和 LLVM 编写自己的编译器,因此使用 LLVM-C-API。 出于调试目的,LLVM-C-API 提供了一个名为 LLVMDumpModule() 的函数。 可悲的是,这似乎

回答 1 投票 0

运行编译的 LLVM IR 时出现分段错误

编辑: 我通过使用 ld -o output main.o -L /lib/gcc/x86_64-linux-gnu /lib/x86_64-linux-gnu/crti.o /lib/x86_64-linux-gnu/crtn.o / 让它工作lib/x86_64-linux-gnu/crt1.o -动态链接器 /lib64/ld-lin...

回答 1 投票 0

是否可以在LLVM-IR Pass的每条指令中插入if-else?

我是LLVM-IR Pass的初学者。 现在我想在每个 IR 指令中插入一个代码片段。 代码片段如下: if (a==1) func1();否则 func2(); a 是一个全局变量。 但现在我

回答 1 投票 0

如何在没有else选项的情况下添加条件分支指令?

我正在尝试让我的 IR 如下所示。在LLVM中可以实现这一点吗? 入口: %2 = 调用 i32 @func() %3 = icmp ne i32 %2, 0, !dbg br i1 %3,标签 %if.then.block 调用 void @abc() ...

回答 2 投票 0

使用 LLVM 15 中的 llvm::PassInfoMixin 声明要在 FunctionPass 中使用的函数以及 New Pass Manager

我目前正在使用 LLVM 15.0.0,并在使用 New Pass Manager 和 llvm::PassInfoMixin 时面临挑战。我的目标是在 FunctionPass 中插入对特定函数的调用,但是......

回答 1 投票 0

迭代模块中的所有结构

我正在编写一个 ModulePass,我需要分析给定模块中定义的每个结构。 我知道带有名称的已识别结构已插入 ValueSymbolTable 中,但我如何迭代...

回答 5 投票 0

无法让“getelementptr”和“store”工作

我正在生成以下 ir %2 = getelementptr 浮点数,ptr %0,i32 1 存储浮点数 1.000000e+00,ptr %2,对齐 8 %3 = getelementptr 浮点数,ptr %0,i32 1 %4 = 加载浮动,ptr %3,对齐 4 ...

回答 1 投票 0

在 LLVM-IR 中解引用指针

我正在编写 llvm ir,但在取消引用指针时遇到问题。 如何确定指针的内部类型并取消引用指针? 例子: 让 i32 = 0; 令 b *i32 = &a;...

回答 1 投票 0

Rust 使用什么 ABI 来传递结构

在x86_64系统上,当返回值小于等于16字节时,通过寄存器RAX和RDX传递,当返回值大于16字节时,通过寄存器传递

回答 1 投票 0

LLVM编译器如何解析c结构体?

对于这样的 C 程序: 结构测试结构1 { 整数*a; 整数b; }; int main(int argc, char *argv[]) { 整数a=1; 结构 test_struct1 t1 = {&a, 0}; 返回0; } 生成的IR代码...

回答 1 投票 0

如何在 MLIR 中将张量转换为 memref

我想将张量转换为 MLIR 中的 memref,我使用 memref.tensor_store 来执行此操作。 代码: func.func @main() { %A = arith.constantense<[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]> : 张量<2x3...

回答 1 投票 0

为什么numba生成的用于向量加法的LLVM IR太复杂了

我想检查 LLVM IR 是否有来自 numba 的向量加法,并注意到它只是为了一个简单的加法而生成大量 IR。我希望有一个简单的“添加”IR,但它生成了 2000 行 LL...

回答 1 投票 0

LLVM依赖分析通行证的使用

对于我自己的 LLVM 传递,我需要 llvm::DependenceAnalysis() 传递的结果。 IE。我想要某些模块/函数的 DependenceInfo 对象。 我尝试了几种方法来获得运行通行证...

回答 1 投票 0

使用 LLVM 和 C++ 构建共享库时出现链接器错误

我正在开发一个项目,尝试使用 C++ 和 LLVM 构建共享库。目标是从编程语言的抽象语法树 (AST) 表示生成 LLVM IR。

回答 1 投票 0

如何判断BasicBlock是否由`if`控制

我想用LLVM来分析一个基本块是否受到if(即br指令)的控制流的影响。 “基本块 BB 不受 br 影响”意味着无论两个 blo 中的哪一个...

回答 2 投票 0

在LLVM IR中提取数组索引变量和for循环迭代变量

我想编写一个 LLVM 传递来获取程序的数组索引信息和 for 循环索引信息。考虑以下访问二维数组的非常简单的程序。 int main() { int i, j, arr2d[5...

回答 1 投票 0

如何在 LLVM IR 中将 `[8 x i1]` 转换为 `i8`

我正在编写一个生成 LLVM IR 的编译器。但我使用的辅助库 (ollvm) 仅支持三种整数类型:i1、i32 和 i64。但是,我需要字符和字符串的字节(i8)值。

回答 0 投票 0

createcall一个没有参数的void函数是怎么实现的

我是 llvm 的新手,我正在尝试制作一个使用 createcall 编译函数的简单程序 功能定义: #pragma一次 #包括 void testfunc(){ 标准::计算<...

回答 0 投票 0

编译 CUDA 文件时在 Clang 编译器中从 ___attribute___((shared)) 到 addrspace(3) 的转换

clang 编译器包含 CUDA 头文件 host_defines.h,其中 __shared__ 定义为 __attribute__((shared))。当使用 ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.