what “inline __attribute__((always_inline))” means in the function?

37,913

Solution 1

The often referenced gcc documentation for always_inline is incomplete.

always_inline attribute makes gcc compiler:

  • Ignore -fno-inline (this is what the documentation says).
  • Ignore the inlining limits hence inlining the function regardless. It also inlines functions with alloca calls, which inline keyword never does.
  • Not produce an external definition of a function with external linkage if marked with always_inline.

The source of the above information is gcc source code, and, hence, is subject to change with no warning.

An interesting bechmark: always_inline performance.

Solution 2

It forces the compiler to inline the function even if optimizations are disabled. Check this documentation for more information.

Share:
37,913

Related videos on Youtube

developer
Author by

developer

Updated on July 09, 2022

Comments

  • developer
    developer 11 months

    I have found the following function definition :

    static inline __attribute__((always_inline)) int fn(const char *s)
    {
      return (!s || (*s == '\0'));
    }
    

    And I want to know the meaning of inline __attribute__((always_inline))?

  • kkkobelief24
    kkkobelief24 almost 2 years
    icc also apply it now

Related