lto相关内容
在C中,如果我有一个如下所示的函数调用 // main.c ... do_work_on_object(object, arg1, arg2); ... // object.c void do_work_on_object(struct object_t *object, int arg1, int arg2) { if(object == NULL) { return;
..
我正在尝试通过 GCC (6.1.1) 的 -flto 标志使用链接时优化. 虽然它在我的代码上运行良好,但它没有链接到我也在构建和链接到我的项目的静态链接库(即 Engine 和库是 glsl-optimizer,仅供参考) 这是输出: .../usr/bin/ranlib: ir_expression_flattening.cpp.o: 处理 lto 对象所需的插件/usr/bi
..
当我启用 -fprofile-generate 时 GCC 会收集哪些信息,哪些优化实际上使用了收集的信息(设置 -fprofile-use 标志时)? 我需要在这里引用.我已经搜索了一段时间,但没有找到任何记录. 有关链接时间优化 (LTO) 的信息将是一个加分项!=D 解决方案 -fprofile-generate 启用 -fprofile-arcs, -fprofile-
..
我想用 gcc 编译一个程序,并为 ARM 处理器进行链接时间优化.当我在没有 LTO 的情况下编译时,系统会被编译.当我启用 LTO(使用 -flto),我收到以下汇编错误: 错误:文字常量无效:池需要更近 上网查了一下,发现这与我系统中的常量有关,它们被放置在一个名为 .rodata 的特殊部分中,该部分称为常量池,并位于 .text 部分之后我的系统.似乎在使用 LTO 进行编译
..
我想知道当前是否有可能在LTO时安排一次“外部"(.so/.dylib)LLVM插件(模块)通过?希望这样做的原因是我要添加的模块间优化. 我也找到了这个话题;如何在LLVM中编写自定义的模间传递?但是对我来说,单独的工具不是一个选择. 谢谢 解决方案 我认为,这里最有用的事情可能是了解传递的运行方式以及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 进行优化来构建它,它将
..
由于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_
..
在我的项目中,我有很多枚举,这些枚举需要具有与枚举成员关联的其他属性以及与枚举类型关联的辅助静态方法。 据我所知,标准枚举类MyItem {...}不可能实现,因此对于我项目中的每个枚举类,我都有一个辅助类MyItemEnum,该类封装了这些辅助静态方法并实例化了自身的辅助实例,这样我就可以访问它们的方法以获得其他属性。 下面是一个示例(尽可能简化,但我相信所有要讨论的功能都保留在那里
..
我具有最新的cmake构建,并尝试了所有构建配置(Debug,MinSizeRel,RelWithDebugInfo,Release,General),但在生成的makefile中,字符串 -lto ,或者功能仍然不存在,或者需要手动换档(在这种情况下,对文档进行LTO或链接时间优化的文本搜索)不会产生任何结果,因此我在官方文档中看不到任何启用方法LTO。 是否有任何方法可以“全局”启用(对
..
我知道Clang和GCC或多或少是兼容的C / C ++编译器,只要您负责诸如体系结构标志,预定义和链接正确的库之类的事情。实际上,使用一个编译器创建库并将它们与另一个编译器链接起来实际上很容易(至少在x86上如此)。 下面是一个测试项目,正是这样: https://gitlab.com/higaski/Interoperability 我想知道链接时间优化(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)
..
我使用GCC-ARM-Embedded和FreeRTOS. FreeRTOS具有功能vTaskSwitchContext(),仅在某些情况下使用 内联汇编代码. 问题是:当我使用LTO时,GCC不会考虑内联汇编代码,并认为未使用该函数,因此将其删除.然后,链接器将失败,因为无法解析内联汇编代码中的函数调用. 我会应用__attribute__((used)),但是我不想触摸FreeRT
..
如果我想用-flto编译我的项目,用--enable-gold构建gcc是否足够?还是我还需要构建gold并用它替换ld?我还需要其他标志吗?即我正在这样做 gcc -flto one.c two.c 解决方案 根据 https://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements , 尽管名称为"链接时间",但LTO 不需要使
..
我正在游荡,这是在Linux上用GCC编译静态库的正确方式,这样当链接时间优化(LTO)应用于可执行文件时,库可以被消费并可能实现最佳性能。 / p> 当仅使用 -flto 编译库时,无论是否使用 -flto 或不。错误是: 对'hello'的未定义引用 其中 hello 是函数库中定义的函数。 根据此堆栈溢出问题一个可能的解决方案如下: set(CMAKE_AR gcc
..
我试图用下面的标志编译我的源代码: 1. -flto 2。 -flto -ffat -lto-objects 3. -flto -fno-fat-lto-objects $ b 第三个提供优化 slim LTO代码,如文档中所写,但我没有看到任何为什么?在输出程序集文件中的第一个和第二个不同,为什么? 操作系统:linux 编译器: GCC 4.7 解决方案
..
我试图使用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
..
当我尝试使用 -flto 构建静态库时,出现未定义的引用错误: library.cpp : #include void foo(){ std :: cout
..
我试图用GCC(6.1.1)的 -flto 标志来使用链接时优化。 虽然它与我的代码一起工作正常,但它不与静态链接库链接我也在构建并链接到我的项目(引擎,图书馆是 glsl-optimizer , 以下是输出: ... / usr / bin / ranlib:ir_expression_flattening.cpp.o:处理lto对象所需的插件 / usr / bin
..
当启用 -fprofile-generate 时,GCC会收集哪些信息,以及哪种优化实际上使用收集的信息(设置 -fprofile时-use flag)? 我需要引文。我搜索了一段时间,但没有发现任何记录。 有关链接时间优化(LTO)的信息将是一个优点! = D 解决方案 -fprofile-generate 使 -fprofile-arcs , -fprofile-value
..
当使用带-flto的clang 3.5.0并与共享库链接时,似乎在共享库中对 operator delete 的调用不会遵循相同的符号解析顺序为从主要对象调用 operator new 。示例: shared.cpp : void deleteIt(int * ptr){ delete ptr; } main.cpp : #include
..