On Saturday, 3 April 2021 at 10:32:18 UTC, Johan Engelen wrote:
>On Friday, 2 April 2021 at 17:00:35 UTC, Steven Schveighoffer wrote:
>On 4/2/21 12:27 PM, Johan Engelen wrote:
>On Friday, 2 April 2021 at 14:40:00 UTC, Steven Schveighoffer wrote:
>[...]
I'm pretty sure LDC will never give any warning or error on this pragma.
It will almost always inline the function into the caller (I don't know of cases where it can't).
So technically for LDC it will never encounter this case.
Pretty much.
When the function is recursive, it may prevent inlining.
Does LDC make any inlining decisions based on this flag?
Yes: the flag sets the alwaysinline
attribute on a function, meaning that it will be inlined whenever possible, also at -O0
.
https://d.godbolt.org/z/GEe8zxrro
-Johan
LDC will sometimes give up inlining on functions containing naked asm also, but there is a flag to tell LLVM that it's safe.
GCC has a similar set of flags, including @attribute("flatten")
which inlines the called functions rather than the the function in it's caller.