Well, I tried to suggest INLINE/NOINLINE from
Code:
#ifdef __GNUC__
#define INLINE __attribute__((always_inline))
#define NOINLINE __attribute__((noinline))
#define ALIGN(n) __attribute__((aligned(n)))
#else
#define INLINE __declspec(forceinline)
#define NOINLINE __declspec(noinline)
#define ALIGN(n) __declspec(align(n))
#endif
Simple "inline" isn't guaranteed to inline anything, and the attribute might not have these side effects.
In practice NOINLINE is the useful one, though, because at -O3 the compiler usually inlines all the functions
anyway.