Is there a way to force an inline function in Clang/LLVM?
AFAIK, the following is just a hint to the compiler but it can ignore the request.
__attribute_
Just a few remarks that might be useful too.
For the OP's comments:
static inline
definitions is a caveat because it can cause, upon changing one of them, multiple different functions that can cause lots of head-scratching, especially if inlining kicks in and the actual calls evaporate to different sequences of statements.A useful discussion and recommendation can be found here. The advice for C99 is summed up as follows:
In a header file define the following and include it wherever it's required:
inline void foo() { /*...*/ }
In a single source file declare it using extern
to generate the external symbol:
extern inline foo();
As for the LLVM IR method proposed, it works but then you are passed the source language domain and subject to a different set of rules (highly dependent on the tool). A brief indicative discussion can be found here.