GCC如何决定什么顺序输出汇编功能?

通过汇编程序GCC生成我项目中的C文件,我注意到在程序集中不会以与源文件中相同的顺序输出函数.这个重新排序的目的是什么,GCC使用什么启发式来决定订单? (它只是数据结构保存功能的工件吗?)这不是-freorder函数,因为我不使用-fprofile-arcs.
程序间优化阶段的后续部分使用调用图的自下而上遍历;这就是你看到的排序.有一篇关于GCC here这部分的原始设计的文章(从前一段时间开始,这个东西首先出现在GCC 3.4中).

您可以使用-fno-toplevel-reorder(或者-fno-unit-at-a-time)在GCC的最新版本中阻止重新排序,但是会禁用一些相关的优化.

相关文章
相关标签/搜索