pragma(inline, true) errors?
Max Haughton
maxhaton at gmail.com
Sat Apr 3 12:04:18 UTC 2021
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.
More information about the Digitalmars-d
mailing list