By default, the compiler automatically expands (inlines) a number of standard and math library functions at the point of the call to that function, which usually results in faster computation.
However, the inlined library functions do not set the errno variable when being expanded inline. In code that relies upon the setting of the errno variable, you should use the -nolib_inline option. Also, if one of your functions has the same name as one of the compiler-supplied library functions, then when this function is called, the compiler assumes that the call is to the library function and replaces the call with an inlined version of the library function.
So, if the program defines a function with the same name as one of the
known library routines, you must use the -nolib_inline
option to ensure that the user-supplied function is used.
-nolib_inline disables inlining of all intrinsics.
Automatic inline expansion of library functions is not related to the inline expansion that the compiler does during interprocedural optimizations. For example, the following command compiles the program sum.f without expanding the math library functions:
ifort -ip -nolib_inline sum.f