gcc -finline-functions 选项
我有一个关于 -finline-function 选项的问题
我们正在测试我们实现的函数是否成功内联。 以下是观察结果:
- 函数正在针对 -01、-O2 和 -O3 优化级别进行内联。
- 这些函数不会内联到优化级别 -O0,这是预期的。
当我们尝试同时使用 -O0 和 -finline-functions 进行编译时,我们仍然观察到函数没有被内联。我们甚至尝试了一种非常简单的方法(一行返回语句)并观察到相同的结果。
因此,使用 -finline-functions 标志和 -O0 似乎是多余的(它不会使函数内联)。我仍在搜索 gcc/g++ 手册中是否记录了此行为。如果有人对 g++ 如何工作有确切的了解,请告诉我们同时指定 -finline-functions 和 -O0。
问候
I have a question regarding the -finline-function options
We are testing whether the function which we have implemented is getting successfully inlined.
Here are the observation
- The functions are getting inlined for -01,-O2 and -O3 optimization levels.
- The functions are not getting inlined for optimization level -O0, which is expected.
When we tried compiling using -O0 and -finline-functions together, we still observed that the functions are not getting inlined. we even tried for a very simple method(one line return statement) and observed the same result.
So it seems that usage of -finline-functions flag along with -O0 is redundant(It will not make functions inline). I am still searching if this behavior is documented somewhere in gcc/g++ manual. Please let us know if anyone has exact idea about how g++ works specify -finline-functions and -O0 together.
Regards
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 gcc 手册 ( http://gcc.gnu.org/onlinedocs/gcc/ Optimize-Options.html ):
From the gcc manual ( http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html ):
像这样定义你的函数
inline void foo (const char) __attribute__((always_inline));
来自网站 (https://gcc.gnu.org/onlinedocs/gcc/Inline.html)
define your function like this
inline void foo (const char) __attribute__((always_inline));
From website (https://gcc.gnu.org/onlinedocs/gcc/Inline.html)