lto相关内容

ARM + gcc:不要使用一个大的 .rodata 部分

我想用 gcc 编译一个程序,并为 ARM 处理器进行链接时间优化.当我在没有 LTO 的情况下编译时,系统会被编译.当我启用 LTO(使用 -flto),我收到以下汇编错误: 错误:文字常量无效:池需要更近 上网查了一下,发现这与我系统中的常量有关,它们被放置在一个名为 .rodata 的特殊部分中,该部分称为常量池,并位于 .text 部分之后我的系统.似乎在使用 LTO 进行编译 ..
发布时间:2021-11-17 22:29:38 其他开发

LLVM LTO Pass插件可能吗?

我想知道当前是否有可能在LTO时安排一次“外部"(.so/.dylib)LLVM插件(模块)通过?希望这样做的原因是我要添加的模块间优化. 我也找到了这个话题;如何在LLVM中编写自定义的模间传递?但是对我来说,单独的工具不是一个选择. 谢谢 解决方案 我认为,这里最有用的事情可能是了解传递的运行方式以及LTO期间代码的状态. 首先,当编译器运行优化过程时,它们将作为一个 ..
发布时间:2021-05-30 19:39:12 其他开发

LTO导致标准库崩溃

请考虑以下程序: #include#includeint main(){std :: string s;std :: getline(std :: cin,s);返回0;} 我尝试使用各种标志来构建它并以 echo foo |./prog. 如果我使用clang 5.0或gcc 7.1(或7.2)并从 -O0 到 -O3 进行优化来构建它,它将 ..
发布时间:2021-04-22 18:43:21 其他开发

G ++和LTO:如何将声明和定义分开?

由于LTO可以解析其他目标文件中的inline符号,因此我尝试将inline函数的声明和定义分开.这是3个文件,分别是dep.hpp,dep.cpp和main.cpp,其中main.cpp和dep.cpp链接在一起,并且dep.hpp在这两个文件中均是#include d: // dep.hpp, declaration #ifndef _DEP_HPP_ #define _DEP_HPP_ ..
发布时间:2020-11-11 21:19:32 其他开发

具有类成员和constexpr链接时优化的C ++ 11枚举

在我的项目中,我有很多枚举,这些枚举需要具有与枚举成员关联的其他属性以及与枚举类型关联的辅助静态方法。 据我所知,标准枚举类MyItem {...}不可能实现,因此对于我项目中的每个枚举类,我都有一个辅助类MyItemEnum,该类封装了这些辅助静态方法并实例化了自身的辅助实例,这样我就可以访问它们的方法以获得其他属性。 下面是一个示例(尽可能简化,但我相信所有要讨论的功能都保留在那里 ..
发布时间:2020-10-08 18:31:02 其他开发

如何使用CMake启用链接时间优化(LTO)?

我具有最新的cmake构建,并尝试了所有构建配置(Debug,MinSizeRel,RelWithDebugInfo,Release,General),但在生成的makefile中,字符串 -lto ,或者功能仍然不存在,或者需要手动换档(在这种情况下,对文档进行LTO或链接时间优化的文本搜索)不会产生任何结果,因此我在官方文档中看不到任何启用方法LTO。 是否有任何方法可以“全局”启用(对 ..
发布时间:2020-10-03 19:37:42 其他开发

Clang,GCC和LTO之间的互操作性

我知道Clang和GCC或多或少是兼容的C / C ++编译器,只要您负责诸如体系结构标志,预定义和链接正确的库之类的事情。实际上,使用一个编译器创建库并将它们与另一个编译器链接起来实际上很容易(至少在x86上如此)。 下面是一个测试项目,正是这样: https://gitlab.com/higaski/Interoperability 我想知道链接时间优化(LTO)是否能以某种方式 ..
发布时间:2020-10-01 22:45:56 其他开发

如何在LLVM中编写自定义的模间传递?

我通过扩展 FunctionPass ,在LLVM中编写了标准的分析阶段>类.一切似乎都有道理. 现在我想做的是编写几个互模通道,即允许我一次分析多个模块的通道.这样一次传递的目的是构造整个应用程序的调用图.另一个这样的目的是让我对函数调用及其参数进行优化. 我通过扩展 ModulePass 类来了解LLVM中的过程间传递,但这仅允许在单个模块中进行分析. 我了解LLVM中的链接 ..
发布时间:2020-05-02 10:52:07 其他开发

Mingw x64 Windows:处理lto对象所需的插件

当我尝试使用64位mingw(x86_64-5.1.0-posix-seh-rt_v4-rev0)编译我的项目时,出现消息: BFD: my/project/dir/filename.cpp.obj: plugin needed to handle lto object 每个源文件的 .但是,当我使用32位mingw(i686-5.1.0-posix-dwarf-rt_v4-rev0) ..
发布时间:2020-05-01 03:58:15 其他开发

防止GCC LTO删除功能

我使用GCC-ARM-Embedded和FreeRTOS. FreeRTOS具有功能vTaskSwitchContext(),仅在某些情况下使用 内联汇编代码. 问题是:当我使用LTO时,GCC不会考虑内联汇编代码,并认为未使用该函数,因此将其删除.然后,链接器将失败,因为无法解析内联汇编代码中的函数调用. 我会应用__attribute__((used)),但是我不想触摸FreeRT ..
发布时间:2020-04-30 08:34:25 其他开发

使用flto的要求

如果我想用-flto编译我的项目,用--enable-gold构建gcc是否足够?还是我还需要构建gold并用它替换ld?我还需要其他标志吗?即我正在这样做 gcc -flto one.c two.c 解决方案 根据 https://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements , 尽管名称为"链接时间",但LTO 不需要使 ..
发布时间:2020-04-30 08:31:33 其他开发

在Linux上使用链接时间代码生成构建静态库的正确方法是什么?

我正在游荡,这是在Linux上用GCC编译静态库的正确方式,这样当链接时间优化(LTO)应用于可执行文件时,库可以被消费并可能实现最佳性能。 / p> 当仅使用 -flto 编译库时,无论是否使用 -flto 或不。错误是: 对'hello'的未定义引用 其中 hello 是函数库中定义的函数。 根据此堆栈溢出问题一个可能的解决方案如下: set(CMAKE_AR gcc ..
发布时间:2018-04-21 10:38:01 其他开发

lto和fat-lto-objects之间的gcc有什么区别

我试图用下面的标志编译我的源代码: 1. -flto 2。 -flto -ffat -lto-objects 3. -flto -fno-fat-lto-objects $ b 第三个提供优化 slim LTO代码,如文档中所写,但我没有看到任何为什么?在输出程序集文件中的第一个和第二个不同,为什么? 操作系统:linux 编译器: GCC 4.7 解决方案 ..
发布时间:2018-04-20 17:38:23 其他开发

未定义的参考在GCC下交叉编译具有LTO的静态库

我试图使用GCC 4.9.2为Windows(x86_64-w64-mingw32)从Linux(x86_64-pc-linux-gnu)交叉编译应用程序。 在构建与静态库链接的目标并使用链接时优化时,我会从链接器中获取目标从库中使用的所有符号的未定义引用错误。 例如,从bar.cpp构建bar.a int bar(void){return 42;} 以及与f ..
发布时间:2018-04-20 16:57:03 其他开发

使用GCC链接时优化和静态链接库

我试图用GCC(6.1.1)的 -flto 标志来使用链接时优化。 虽然它与我的代码一起工作正常,但它不与静态链接库链接我也在构建并链接到我的项目(引擎,图书馆是 glsl-optimizer , 以下是输出: ... / usr / bin / ranlib:ir_expression_flattening.cpp.o:处理lto对象所需的插件 / usr / bin ..
发布时间:2018-04-20 16:39:32 其他开发

GCC配置文件引导优化(PGO)收集哪些信息以及哪些优化使用它?

当启用 -fprofile-generate 时,GCC会收集哪些信息,以及哪种优化实际上使用收集的信息(设置 -fprofile时-use flag)? 我需要引文。我搜索了一段时间,但没有发现任何记录。 有关链接时间优化(LTO)的信息将是一个优点! = D 解决方案 -fprofile-generate 使 -fprofile-arcs , -fprofile-value ..
发布时间:2018-04-20 16:00:52 其他开发

GCC简档引导优化(PGO)

当我启用 -fprofile-generate 并且哪个优化实际上使用收集的信息时(当设置 -fprofile时),GCC收集哪些信息-use flag)? 我需要引用。我搜索了一会儿,但没有发现任何记录。 有关链接时优化(LTO)的信息将是一个加号! = D 解决方案 -fprofile-generate 启用 -fprofile-arcs , -fprofile-value ..
发布时间:2016-10-13 11:09:10 C/C++

ARM + GCC:不使用一个大.RODATA节

我要编译一个程序与ARM处理器链接时优化GCC。当我编译没有LTO,该系统被编译。当我使LTO (有-flto),我得到以下汇编程序错误: 错误:无效的常量:池必须接近 找我发现这个事做在我的常数,它被放置在一个特殊的部分称为.RODATA,这被称为常量池,并.text段的右后放在网络上我的系统。这似乎与内联,因为和其他优化LTO编译时,此.RODATA部分过于远离指令,从而使常量的 ..
发布时间:2016-05-29 14:57:14 其它硬件开发