我读过“整个程序优化”(wpo)和“链接时间代码生成”(ltcg)。
我想知道如果我将所有源代码从 cli 一次性传递给编译器(如“g++ a.cpp b.cpp”),是否会进行更多模块间分析?
或者这只是启用这些标志之一?
编译器之间对此有区别吗?
例如,英特尔编译器可以从这种做法中受益,而其他编译器则不能吗?
我想知道如果我将所有源代码从 cli 一次性传递给编译器(如“g++ a.cpp b.cpp”),是否会进行更多模块间分析?
对于 GCC,不,这样做不会启用任何 WPO,每个翻译单元都是单独、隔离地处理的。我 99% 确信 Clang 也是如此,并且 90% 确信大多数其他编译器也是如此。
使用 GCC,要启用模块间优化,您需要通过-flto
switch,它仍然单独处理每个翻译单元,但附加信息被写入目标文件,然后当它们链接在一起时,会进行进一步的优化以产生最终输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)