r274657 - in /trunk/gcc: ada/ChangeLog ada/inli...

pmderodat@gcc.gnu.org pmderodat@gcc.gnu.org
Mon Aug 19 08:36:00 GMT 2019


Author: pmderodat
Date: Mon Aug 19 08:36:53 2019
New Revision: 274657

URL: https://gcc.gnu.org/viewcvs?rev=274657&root=gcc&view=rev
Log:
[Ada] Lift restriction on instantiations that are compilation units

This change lifts the restriction that was still present in the new
on-demand instantiation scheme for the body of generics instantiated in
non-main units.

The instantiations that are compilation units were still dealt with in
the old-fashioned way, that is to say the decision of instantiating the
body was still made up front during the analysis of the instance
declaration, instead of being deferred until after a call to an inlined
subprogram is encountered.

This should save a few more cycles when full inlining across units is
enabled, but there should otherwise be no functional changes.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* inline.adb (Add_Inlined_Body): Do not special-case instances
	that are compilation units.
	(Add_Pending_Instantiation): Likewise.
	(Instantiate_Body): Skip instantiations that are compilation
	units and have already been performed.
	* sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
	instances that are compilation units.
	(Load_Parent_Of_Generic): Be prepared for parent that is a
	compilation unit but whose instantiation node has not been
	replaced.

gcc/testsuite/

	* gnat.dg/generic_inst12.adb, gnat.dg/generic_inst12_pkg1.adb,
	gnat.dg/generic_inst12_pkg1.ads,
	gnat.dg/generic_inst12_pkg2.ads: New testcase.

Added:
    trunk/gcc/testsuite/gnat.dg/generic_inst12.adb
    trunk/gcc/testsuite/gnat.dg/generic_inst12_pkg1.adb
    trunk/gcc/testsuite/gnat.dg/generic_inst12_pkg1.ads
    trunk/gcc/testsuite/gnat.dg/generic_inst12_pkg2.ads
Modified:
    trunk/gcc/ada/ChangeLog
    trunk/gcc/ada/inline.adb
    trunk/gcc/ada/sem_ch12.adb
    trunk/gcc/testsuite/ChangeLog



More information about the Gcc-cvs mailing list