The extent to which suggestions made by using the
storage-class specifier are effective (C90 6.5.1, C99 and C11 6.7.1).
register specifier affects code generation only in these ways:
-O0is in use, the compiler allocates distinct stack memory for all variables that do not have the
registerstorage-class specifier; if
registeris specified, the variable may have a shorter lifespan than the code would indicate and may never be placed in memory.
setjmpdoesn’t save the registers in all circumstances. In those cases, GCC doesn’t allocate any variables in registers unless they are marked
The extent to which suggestions made by using the inline function specifier are effective (C99 and C11 6.7.4).
GCC will not inline any functions if the
-fno-inline option is
used or if
-O0 is used. Otherwise, GCC may still be unable to
inline a function for many reasons; the
-Winline option may be
used to determine if a function has not been inlined and why not.