问题标签 [llvm-ir]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
417 浏览

llvm - LLVM 中的向量加法程序

我正在尝试在 LLVM 中编写一个 5 元素向量加法程序,但不知道如何返回整个结果向量。我的代码在下面,错误是

LLVM 错误:提供的 main() 的返回类型无效

0 投票
1 回答
2188 浏览

llvm - 如何获取表达式上所有操作数的内存地址

我有一些表达式a=b+c-d*e,在 LLVM pass 的帮助下,我想制作一个这样的字符串

“['b'的十六进制地址] [+的操作码] ['c'的十六进制地址] [-的操作码] ['d'的十六进制地址] [*的操作码] ['e'的十六进制地址]”。

比我该怎么做。

0 投票
1 回答
873 浏览

llvm - 从 llvm pass 输出输入的常量字符数组

全部

我想知道 llvm 如何传递从输入源定义的输出常量 char 数组。这是我想做的一个例子。

测试输入源

llvm 通行证片段

使用源代码,上面的 llvm pass 将打印以下输出。

输出

但是,我想要实现的是

  1. 确定第一个参数是一个常量字符数组
  2. 如果是这样,打印出“你好,世界\n”

谁能让我知道如何实现这个?

非常感谢您提前提供的帮助!/康国

0 投票
1 回答
510 浏览

linux-kernel - linux内核中内联汇编的含义

我想知道以下代码中 %P3 的含义:

此外,在 LLVM IR 中,代码映射到:

我的理解是,这实际上是在调用arch/x86/lib/getuser.S中的一个特定函数__get_user_X,但不清楚具体是哪一个(__get_user_4?)。

最后,我想了解一下 %P 和 %p 的区别。

0 投票
1 回答
354 浏览

llvm - 设置 BasicBlock 的继任者时 ModulePass 出错

在 LLVM 中的以下代码中

代码在 Module Pass 中实现时出现以下错误

是否有一个标准我应该使用将每个基本块的 idx 设置为后继者此外,一旦我删除 ii 的增量,它才不会发出此错误,但结果错误

0 投票
3 回答
1029 浏览

llvm - 如何查看 llvm 转换过程所做的更改

如何在 c 程序中查看转换传递(如死代码消除)所做的更改。就像我在终端上运行以下命令一样,它会创建一个 .bc 文件,通过该文件我可以看到 IR。但是如何在 c 程序中查看 -dce 所做的更改。命令:$opt in.bc -o out.bc -dce

0 投票
1 回答
1001 浏览

c++ - LLVM 从结构值中提取 i8*

我正在编写一个使用 LLVM 作为后端的编译器,我已经编写了前端(解析器等),现在我来到了一个十字路口。

我有一个结构(%Primitive),它包含一个字段、一个 i8* 值、一个指向字符数组的指针。

在编译器中, 的实例Primitive在堆栈上传递。我正在尝试使用该函数将此字符数组写入标准输出puts,但它并没有像我希望的那样工作。

当我尝试运行代码(使用 ExecutionEngine 或 LLVM 解释器程序lli)时,我得到了同样的错误;分段错误。

错误在于传递给的地址puts不知何故是数组中第一个字符的 ASCII 字符代码。似乎传递的地址不是指向 8 位字符数组的指针,而是等于取消引用字符串的 8 位宽指针。

例如,如果我@WritePrimitive使用 i8* 成员指向字符串的原语调用"hello"puts则使用字符串地址调用0x68

有任何想法吗?

谢谢

编辑:你是对的,我的初始化Primitive不正确,我的新初始化函数是:

我错过了,谢谢!

0 投票
1 回答
425 浏览

optimization - “clang”是否执行公共子表达式消除?

我尝试将我的 opencl 内核编译为 llvm IR。

使用以下说明

/home/mypass/llvm/Debug+Asserts/bin/clang -I/home/ian031545/libclc/generic/include -include clc/clc.h -Dcl_clang_storage_class_specifiers -target nvptx--nvidiacl -Xclang -mlink-bitcode-file - Xclang /ian031545/libclc/nvptx--nvidiacl/lib/builtins.bc -S -emit-llvm kernel.cl -o kernel.ll

opencl 内核的结构是这样的

使用上述指令后的 llvm IR 如下所示

有谁知道为什么clang在这里做这种优化?(我们说它是前端)

或者它可能不是一种优化?

我不知道为什么clang在这里这样做,出于什么目的?

我可以通过在上面的指令中添加标志来要求 clang 不要这样做吗?

提前致谢

0 投票
1 回答
308 浏览

gcc - DragonEgg 能否运行 gcc 中可用的优化通道并生成 llvm IR?

是否可以对任何代码运行 gcc 优化传递并最终获得 llvm IR?我想使用 gcc 中可用的死存储消除。我知道 llvm 也有这个通行证,但它不像 gcc 那样先进。

0 投票
1 回答
1648 浏览

llvm - badref 是什么意思?

这条 IR 线是什么意思

用于定义新函数并将其写入文件