假设我有一个由三个函数A,B和C组成的编译单元.从编译单元外部的函数调用一次(例如,它是一个入口点或回调函数); A被A多次调用(例如,它在紧密循环中被调用); 每次调用B都会调用一次C(例如,它是一个库函数).
通过A(通过B和C)的整个路径对性能至关重要,尽管A本身的性能不是关键的(因为大部分时间花在B和C上).
什么是应该注释的最小函数集,__attribute__ ((hot))以实现对此路径的更积极的优化?假设我们不能使用-fprofile-generate.
等价:__attribute__ ((hot))是指"优化此函数的主体","优化对此函数的调用","优化此函数所做的所有后代调用",还是它们的某种组合?
GCC信息页面没有明确解决这些问题.
我正在从几个源文件和库中构建一个静态二进制文件,我想控制函数放入生成的二进制文件的顺序.
背景是,我有外部代码链接到这个二进制文件中的偏移量.现在,如果我更改源,所有偏移都会改变,因为gcc可能决定以不同的方式对函数进行排序,所以我想以固定的顺序将引用的函数放在开头,这样它们的偏移量保持不变......
我查看了ld的文档,但找不到任何关于函数顺序的信息.
我发现的唯一的东西是-fno-toplevel-reorder,这对我没有帮助.