https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69219
Bug ID: 69219 Summary: [5/6 regression] failed to compile nested subprograms with Inline_Always and Intrinsic Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada Assignee: unassigned at gcc dot gnu.org Reporter: demoonlit at panathenaia dot halfmoon.jp Target Milestone: --- Created attachment 37297 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37297&action=edit minimal bug triggering source code gcc-5 and later have generated no machine-code for subprograms having the combination of Inline_Always and Intrinsic. However, this pattern causes <built-in> error for nested subprograms. procedure nestedinlinealways is -- outer subprogram procedure NI; pragma No_Inline (NI); procedure IA; pragma Convention (Intrinsic, IA); pragma Inline_Always (IA); -- pragma Inline (IA); -- it works fine. procedure IA is begin NI; -- calling other subprogram here is one of the triggers. end IA; procedure NI is null; begin IA; end nestedinlinealways; Please try to compile above code (the attached file): % gcc -c nestedinlinealways.adb <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 It will become to be compiled if I replace pragma Inline_Always to normal Inline or remove pragma Convention.