On Mon, Sep 30, 2019 at 11:50 PM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > So __attribute__((always_inline)) doesn't guarantee that code will be > inlined. [...] inline and __attribute__((always_inline)) > are a heuristic laden mess and should not be relied upon. Small note: in GCC, __attribute__((always_inline)) is documented as actually guaranteeing to either inline or error otherwise (although see the remark for indirect calls): "Failure to inline such a function is diagnosed as an error. Note that if such a function is called indirectly the compiler may or may not inline it depending on optimization level and a failure to inline an indirect call may or may not be diagnosed." As for LLVM/Clang, no idea, since it does not say anything about it in the docs -- but from what you say, it is a weaker guarantee. Cheers, Miguel