问题标签 [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.
llvm - LLVM 中的向量加法程序
我正在尝试在 LLVM 中编写一个 5 元素向量加法程序,但不知道如何返回整个结果向量。我的代码在下面,错误是
LLVM 错误:提供的 main() 的返回类型无效
llvm - 如何获取表达式上所有操作数的内存地址
我有一些表达式a=b+c-d*e
,在 LLVM pass 的帮助下,我想制作一个这样的字符串
“['b'的十六进制地址] [+的操作码] ['c'的十六进制地址] [-的操作码] ['d'的十六进制地址] [*的操作码] ['e'的十六进制地址]”。
比我该怎么做。
llvm - 从 llvm pass 输出输入的常量字符数组
全部
我想知道 llvm 如何传递从输入源定义的输出常量 char 数组。这是我想做的一个例子。
测试输入源
llvm 通行证片段
使用源代码,上面的 llvm pass 将打印以下输出。
输出
但是,我想要实现的是
- 确定第一个参数是一个常量字符数组
- 如果是这样,打印出“你好,世界\n”
谁能让我知道如何实现这个?
非常感谢您提前提供的帮助!/康国
linux-kernel - linux内核中内联汇编的含义
我想知道以下代码中 %P3 的含义:
此外,在 LLVM IR 中,代码映射到:
我的理解是,这实际上是在调用arch/x86/lib/getuser.S中的一个特定函数__get_user_X,但不清楚具体是哪一个(__get_user_4?)。
最后,我想了解一下 %P 和 %p 的区别。
llvm - 设置 BasicBlock 的继任者时 ModulePass 出错
在 LLVM 中的以下代码中
代码在 Module Pass 中实现时出现以下错误
是否有一个标准我应该使用将每个基本块的 idx 设置为后继者此外,一旦我删除 ii 的增量,它才不会发出此错误,但结果错误
llvm - 如何查看 llvm 转换过程所做的更改
如何在 c 程序中查看转换传递(如死代码消除)所做的更改。就像我在终端上运行以下命令一样,它会创建一个 .bc 文件,通过该文件我可以看到 IR。但是如何在 c 程序中查看 -dce 所做的更改。命令:$opt in.bc -o out.bc -dce
c++ - LLVM 从结构值中提取 i8*
我正在编写一个使用 LLVM 作为后端的编译器,我已经编写了前端(解析器等),现在我来到了一个十字路口。
我有一个结构(%Primitive),它包含一个字段、一个 i8* 值、一个指向字符数组的指针。
在编译器中, 的实例Primitive
在堆栈上传递。我正在尝试使用该函数将此字符数组写入标准输出puts
,但它并没有像我希望的那样工作。
当我尝试运行代码(使用 ExecutionEngine 或 LLVM 解释器程序lli
)时,我得到了同样的错误;分段错误。
错误在于传递给的地址puts
不知何故是数组中第一个字符的 ASCII 字符代码。似乎传递的地址不是指向 8 位字符数组的指针,而是等于取消引用字符串的 8 位宽指针。
例如,如果我@WritePrimitive
使用 i8* 成员指向字符串的原语调用"hello"
,puts
则使用字符串地址调用0x68
。
有任何想法吗?
谢谢
编辑:你是对的,我的初始化Primitive
不正确,我的新初始化函数是:
我错过了,谢谢!
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 不要这样做吗?
提前致谢
gcc - DragonEgg 能否运行 gcc 中可用的优化通道并生成 llvm IR?
是否可以对任何代码运行 gcc 优化传递并最终获得 llvm IR?我想使用 gcc 中可用的死存储消除。我知道 llvm 也有这个通行证,但它不像 gcc 那样先进。
llvm - badref 是什么意思?
这条 IR 线是什么意思
用于定义新函数并将其写入文件