问题标签 [llc]
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.
assembly - LLC -O=3 可以不从 clang -O0 生成的未优化 llvm 字节码中省略帧指针吗?
我有一个简单的 c 代码:
以下命令的输出
我得到:
这是预期的。该foo()
功能已转换为retq
指令。
但是如果我运行以下命令:
我得到:
从功能上讲,这是可以的,但foo()
在这种情况下,没有必要为空函数处理帧指针。第一种情况和第二种情况的区别在于,在第一种情况下,我们使用 -O3 表示 clang,而在第二种情况下,我们使用 -O3 表示 llc。我认为这两个是等价的。
我还尝试了以下方法:
我得到:
那么,这是否意味着如果clang
决定将帧指针发送到 LLVM 字节码中,llc
是否不够聪明,无法删除它们?(llc
似乎没有-fomit-frame-pointer
选项,尽管它确实有-disable-fp-elim
选项,Disable frame pointer elimination optimization
所以我认为 llc 能够消除帧指针)
c++ - 从源代码构建时 llvm 没有注册目标
我正在使用 LLVM c 绑定来编写编译器,当我尝试从默认目标三元组 (x86_64-pc-windows-msvc) 创建目标时,LLVM 表示没有注册目标。
我已经从源代码构建 LLVM 并使用 LLVM_TARGETS_TO_BUILD=all 标志来启用所有目标。但是,当我调用 llc --help 时,会列出大量目标。那么为什么 llvm C++ 代码找不到目标呢?
python - LLC Compiler 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
我使用 python 创建自定义编程语言,PLY 作为词法分析器和解析器,LLVMlite 作为低级中间语言来进行代码生成。我已经使用 Python pip 安装了 PLY 和 LLC
我使用 LLC 创建目标文件 output.o,并使用 GCC 创建最终的可执行文件,如下所示。
当我执行时llc -filetype=obj output.ll
我得到
我已经花了几个小时在这上,但无法弄清楚。怎么了?
objective-c - LLVM 错误:无法选择:内在 %llvm.objc.clang.arc.use
尝试链接一些 IR 文件时,我遇到了llc的下一个错误:
我发现如果我O0
在编译期间禁用了 clang 优化(),则不会弹出错误,但我不想这样做
我附上了如何重现它的示例,只是cd
“问题”文件夹并运行“问题.sh”来重现错误。你必须有 Xcode(12.x 首选)你运行它
https://drive.google.com/file/d/1j0TvMZI2A7QxRbv_Q7aydtlNYaiTPYBm/view?usp=sharing
这就是 issue.sh 包含的内容,这是我实际实现的简化版本:
正如我之前提到的,如果您更改-Os
for -O0
,错误就会消失,但我确实需要尺寸优化。
我包含的 Objective-c 文件是来自 Google 库的 pod 的文件
https://github.com/google/gtm-session-fetcher
我发现了一个类似的问题,但它还没有任何答案 LLVM Error Cannot select intrinsic %llvm.coro.begin
c - 有没有办法从我的 C 项目中调用 llvm `llc` 命令?
我正在尝试在我的 C 编译器项目中使用来自 llvm 的 llc 命令,但我不知道如何使用它。我已经尝试在 cmake 中链接 llvm 库,但我不知道如果我想要链接哪些库llc
。任何帮助都可以,谢谢!
clang - 为什么 LLVM 窗口中缺少 LLC.exe?
我一直在尝试使用 emscripten 将 C 构建到 WASM 和 Javascript 中。C:\Program Files\LLVM\bin\llc.exe
Emscripten 需要 clang,所以我安装了它,但是在运行 emcc 和 em++ 时它显示“emcc: error: llc executable not found at ”。Windows版本中缺少LLC.exe是否有原因?如果是这样我怎么得到它。
c - eBPF 工具链 / 使用 clang 和 llc 使用 CMake 编译 ebpf / 两阶段构建过程
我在一个文件夹中有一堆 ebpf 程序(使用 c 和 libbpf;没有 BCC/bpftrace),我们称它们为File1.bpf.c
, File2.bpf.c
, ...
. clang
通常,我使用and编译 bpf 程序llc
,每个文件本身:
clang -I [...]/libbpf/build/root/usr/include/ -target bpf -S -D BPF_PROG -D __BPF_TRACING__ -D__TARGET_ARCH_x86 -Wall -O2 -emit-llvm -c -g File1.bpf.c
llc-11 -march=bpf -filetype=obj -o File1.bpf.o File1.bpf.ll
与此无关。之后我可能想使用 bpftool 链接一些文件。
所以我的问题是:
- 如何在 cmake 中完成这个两阶段的构建过程?我看过一些使用函数的片段,但它对我不起作用并且感觉非常“hacky”。当前的想法是使用 python 脚本作为伪编译器。对于 cmake,编译器设置为 Python 脚本,它调用 clang 和 llc。我认为这是一个可能的解决方案,但它“感觉不对”并且也有问题。另外,我想知道为什么我在 Stackoverflow 上找不到关于这个主题的教程或问题,这导致了我的第二个问题:
- 这个程序是最新的吗?如果不是:处理 bpf 编译的首选方法是什么?
我想在 cmake 中实现的构建过程的可视化,每一行都是独立的:
我不想使用骨架;bpf 对象之后应该可以独立加载。
网上看的时候,一般在博文中clang和llvm都是c代码。但是,似乎clang可以直接编译为bpf对象,存在-mcpu
无法指定的问题1。用mcpu
指令集版本设置。因此,另一个问题是:
- 什么时候应该
-mcpu
指定?
在此先感谢您的帮助:)
arm - 如何从 LLVM IR 交叉编译到 ARM Cortex M4 的汇编?
我正在尝试将 llvm-ir 文件交叉编译为汇编,或者更好地为使用 llc 编译器的 ARM Cortex M4 微处理器生成目标文件。
为此,我必须指定哪些参数?我试过这个命令
llc -mtriple=armv7m-eabi -mcpu=cortex-m4 file.ll -o file.s
它不会抛出任何错误,但生成的汇编代码仍然适用于 x86 机器。
特别是,尝试使用随机参数进行编译,例如
llc -mtriple=randomwords -mcpu=cortex-m4 file.ll -o file.s
它顺利进行,为 x86 机器生成汇编代码。它忽略了我指定的内容。