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.