-fno-builtin
不承认不以__builtin_开头的函数为内建(built-in)函数。
gcc一般会生成特定的代码更有效地处理某一内建(built-in)函数,例如,alloca调用可能会编程单指令,该指令能够直接调整堆栈;memcpy调用可能编程内联(inline)的复制循环。这最后的代码常常是小而快的。但是由于这个函数调用不会再以原来的样子出现,所以你不能设置断点(breakpoint)在这些条用上。你也不能够改变这个函数的行为通过调用不同的库。另外,当一个函数被作为一个内建(built-in)函数时,gcc可以生成一些与这个函数有关的警告信息当你调用这个函数时。
使用“-fno-builtin-function’选项,仅仅是不把function这个函数当作内建(built-in)函数,function这个函数不能够以"__builtin_"开头。如果一个函数不是以内建(built-in)函数名命名的,那么这个选项(-fno-builtin-function)是无效的。没有对应的“-fbuiltin-function”选项,当使用“-fno-builtin”或“-ffreestanding”选项时,你又想有选择性的使用内建(built-in)函数时,你可以定义宏(macros),例如:
#define abs(s) __builtin_abs((n))
#define strcpy( d, s) __builtin_strcpy( (d), (s) )
-flto[=n]
运行标准的连接时间优化。