Hi, I'm curious to know if the standard 'static inline' rules apply to always_inline functions defined externally but with LTO. For example, // foo.h extern __attribute__((__always_inline__)) void foo(void); // foo.c #include "foo.h" void foo(void) { ... } // bar.c #include "foo.h" __attribute__((__visibility__("default"))) void bar(void) { ... foo(); ... } Assuming both foo.c and bar.c are compiled with "-flto -fvisibility=hidden -c" and then the resulting objects are linked with "-flto": 1. Is it reasonable to expect that every invocation of foo() would be inlined? 2. Is it reasonable to expect that the definition for foo() would never be emitted out-of-line (unless f.e. a pointer to foo was taken)? 3. Will warnings be emitted if foo() can't be inlined? Thanks, Aaloan