- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在为 lto 链接后,有没有办法获得 llvm IR?例如,我有以下行:
$ clang -flto -O2 a.c main.c -fuse-ld=gold -v -save-temps
所以我想获取 llvm IR,其中文件 a.c
和文件 main.c
链接在一个 monlithic.bc
(或 monlithic.o
与 IR)。我尝试添加选项 -Wl,-plugin-opt=save-temps
但出现错误:
libLLVMLTO: Unknown command line argument 'save-temps'. Try: 'libLLVMLTO -help' clang: error: linker command failed with exit code 1 (use -v to see invocation)
还有什么方法可以转储 IR 的 lto 转换?
最佳答案
问题已通过以下方式通过较新的链接器和 llvm(llvm-3.8 和 binutils-2.25)解决:
$ ls
t1.c t2.c t2.h
$ clang -flto -O2 t1.c t2.c -v -fuse-ld=gold -save-temps -Wl,-plugin-opt=save-temps -Wl,--verbose
...
$ ls
a.out a.out.bc a.out.o a.out.opt.bc t1.bc t1.c t1.i t1.o t2.bc t2.c t2.h t2.i t2.o
$ llvm-dis a.out.bc
$ vim a.out.ll
关于llvm - lto链接后获取llvm IR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366875/
我正在使用 CMake 为我的 C 编译启用 IPO(过程间优化): set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRU
我正在使用 CMake 为我的 C 编译启用 IPO(过程间优化): set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRU
我一直在尝试使用以下代码片段(gcc 编译时没有任何警告)更改 Windows(7 和 Server 2012 R2)中 LTO8 磁带的事件分区: DWORD partition= 2; if(Se
考虑以下程序: #include #include int main() { std::string s; std::getline(std::cin, s);
我正在使用链接时间优化 (lto) 和 O2 优化级别编译一个带有修改版 clang 的项目。 O0 和 O1 都很好,但遗憾的是 O2 删除了一些函数调用。有没有办法告诉优化忽略特定功能?我已经尝试
我有带闪存的 MCU(像往常一样)。链接器将 .struct_init、.struct_init_const、.struct_not_init 部分放置到属于闪存部分 20 的地址。它在链接器脚本中被
在编译翻译单元时,编译器会进行大量优化 - 内联、常量折叠/传播、别名分析、循环展开、死代码消除以及许多我从未听说过的其他优化。在多个翻译单元之间使用 LTO/LTCG/WPO 时是否全部完成,或者只
比较 C++ 中的虚函数和 C 中的虚表,编译器在一般情况下(以及对于足够大的项目)在去虚拟化方面是否同样出色? 天真地,C++ 中的虚函数似乎具有更多的语义,因此可能更容易去虚拟化。 更新: Moo
GCC、MSVC、LLVM 和可能的其他工具链支持链接时间(整个程序)优化,以允许优化编译单元之间的调用。 编译生产软件时是否有理由不启用此选项? 最佳答案 我假设 “生产软件” 是指您交付给客户/投
有没有办法检测代码是否是用 -flto 编译的? 示例是Linux下的经典库或可执行文件,使用GCC(4.9.1)编译,无需调试。 最佳答案 考虑到 LTO 信息存储在目标文件内的几个 ELF 部分中
假设我有一个函数 void do_something() { //.... #ifdef FEATURE_X feature_x(); #endif /
对于 gcc,这个 answer告诉我们如何验证链接时间优化是否已执行。对于 clang,我看不到任何类似于 .gnu.lto 的条目. 更具体地说,我有一个二进制文件,我很确定 LTO 应该有很大的
我试图用下一个标志编译我的源代码: 1. -flto2. -flto -ffat-lto-objects3. -flto -fno-fat-lto-objects 第三个提供优化slim文档中编写的
我有一个项目,在 ARM Cortex-M4 处理器上运行,我试图在其中包含 gcc 链接时优化 (LTO) 功能。 目前我的编译和链接标志是: CFLAGS = -ggdb -ffunction-s
在编写代码或构建脚本以使用 LTO 进行编译时需要牢记哪些注意事项和陷阱? 这个问题背后的动机是为了更好地理解为什么某些项目在启用 LTO 时编译不干净。特别是,我无法构建 ICU在启用 LTO 的情
我想使用符号版本控制和链接时优化 (LTO) 编译共享库。但是,一旦我打开 LTO,一些导出的符号就会消失。这是一个最小的例子: 首先定义函数 fun 的两个实现: $ cat fun.c #incl
当我尝试使用 -flto 构建静态库时,出现 undefined reference 错误: library.cpp: #include void foo() { std::cout << "T
Clang 允许使用瘦 lto 来加快编译时间,同时仍然保留使用 lto 和选项 -flto=thin 的大部分优点。 . gcc 有相当于 clang 的薄 lto 吗? 最佳答案 GCC 有一个相
我正在使用 arm-none-eabi-gcc 为基于 Cortex-M4 的微 Controller 编译一个可执行文件。非性能关键代码使用 -Os(针对可执行代码大小进行了优化)编译,性能关键部分
有这样的代码: #include "kernel.h" int main() { ... for (int t = 0; t 1099: 00 109a: f
我是一名优秀的程序员,十分优秀!