[Bug ada/69219] [5/6 regression] failed to compile nested subprograms with Inline_Always and Intrinsic

demoonlit at panathenaia dot halfmoon.jp gcc-bugzilla@gcc.gnu.org
Tue Jan 12 08:50:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69219

--- Comment #5 from yuta tomino <demoonlit at panathenaia dot halfmoon.jp> ---
> "built-in" is because you use Intrinsic!  In any case, the rule of thumb is to
> never use pragma Inline_Always with anything except for very small subprograms.

Well...
I believe above "IA" is a sufficiently small subprogram because it's one line!

...Instead of such a viewpoint, I think there are two sides of this problem.

1. The compiler rejects the code that seems syntactically legal, and this
behavior is depending on the place where the subprogram is instantiated.
There is no reason why it is accepted in the library-level and rejected in the
nested scope, especially when the pragmas are written in the generic package
practically.

2. The error message is confused. "<built-in>" is one too.
I wish that "Intrinsic" is reported if Intrinsic is the cause.
And the other lines are also unclear.

> <built-in>: In function 'nestedinlinealways.ia':
> nestedinlinealways.adb:3:14: error: subprogram 'nestedinlinealways.ni'
>                                     not marked Inline_Always
> nestedinlinealways.adb:11:4: error: parent subprogram cannot be inlined

At first, I got them wrong that the cause is at "NI".
Next, it took time for me to understand which the "parent" is indicating.

These message should be improved like your explanation, even if this pattern
should be an error.


More information about the Gcc-bugs mailing list