首页 > 解决方案 > gcc 的选项直到更新版本才起作用

问题描述

我最近在为 gcc 的优化而苦恼,希望对性能提升有所帮助。

我找到了选项-freorder-blocks-and-partition

(此选项存在于非常旧的 gcc 版本中,例如 gcc 5.6。)

它可以用来划分冷/热冷来分离函数,与-ffunction-sections链接器脚本一起,冷/热代码可以放入单独的 ELF 部分(.text 部分和 .text.cold 部分)。

但是这个选项只适用于最近的 gcc 版本。

我在 gcc 10.1 上对其进行了测试,并使用以下编译器探索工具,确保它从 8.1 版开始工作:

在 gcc8.1:https ://godbolt.org/z/hGcnMM中,汇编代码包含如下函数:

fa(int, int) [clone .cold.0]:

在 gcc7.1: https://godbolt.org/z/rhqjE1中,汇编代码不包含这样的功能。

为什么它不适用于旧的 gcc?

有没有办法控制旧版本的 gcc 应用这种优化?

标签: gcccompiler-optimization

解决方案


推荐阅读