因此,在编译内核代码时,我有一个函数,当编译时(至少)不带“ -O”时会发出:
“警告:函数中的堆栈帧大小为1080字节”
并在最深处,将超出堆栈并在特定测试中惊慌。
但是当用“ -O”编译时会产生
“警告:函数中的堆栈帧大小为584字节”
,我们可以避免过度使用堆栈。
但是,在调试时不使用-O进行编译很有用,但是我希望始终在此函数和/或源文件上启用“ -O”。或者,至少,“-O”的任何部分都会使它在堆栈使用上更小。 __attribute__ ((minsize))
也不起作用。
其他stackoverflow链接指出"__attributes__ ((optnone))"
,但我有点想相反。
我可以摆弄Makefile,并确保源文件得到-O,但我想我会先检查clang选项。
当前使用: Apple LLVM版本10.0.0(clang-1000.11.45.5)