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