Commit 04e9213d by Arnaud Charlet

[multiple changes]

2014-11-20  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Analyze_Inlined_Bodies): Iterate between loading
	of the inlined bodies and instantiation of the generic bodies
	until no more bodies need to be loaded.

2014-11-20  Vincent Celier  <celier@adacore.com>

	* prj.adb, prj.ads, prj-conf.adb: Minor change of procedure name:
	Update_Ignore_Missing_With becomes Set_Ignore_Missing_With.

From-SVN: r217831
parent 8a23b100
2014-11-20 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Analyze_Inlined_Bodies): Iterate between loading
of the inlined bodies and instantiation of the generic bodies
until no more bodies need to be loaded.
2014-11-20 Vincent Celier <celier@adacore.com>
* prj.adb, prj.ads, prj-conf.adb: Minor change of procedure name:
Update_Ignore_Missing_With becomes Set_Ignore_Missing_With.
2014-11-20 Robert Dewar <dewar@adacore.com> 2014-11-20 Robert Dewar <dewar@adacore.com>
* exp_ch7.adb, sem_ch5.adb, sem_ch7.adb, sem_util.adb, * exp_ch7.adb, sem_ch5.adb, sem_ch7.adb, sem_util.adb,
......
...@@ -774,15 +774,20 @@ package body Inline is ...@@ -774,15 +774,20 @@ package body Inline is
end if; end if;
J := J + 1; J := J + 1;
end loop;
-- The analysis of required bodies may have produced additional if J > Inlined_Bodies.Last then
-- generic instantiations. To obtain further inlining, we perform
-- another round of generic body instantiations. Establishing a -- The analysis of required bodies may have produced additional
-- fully recursive loop between inlining and generic instantiations -- generic instantiations. To obtain further inlining, we need
-- is unlikely to yield more than this one additional pass. -- to perform another round of generic body instantiations.
Instantiate_Bodies;
Instantiate_Bodies; -- Symmetrically, the instantiation of required generic bodies
-- may have caused additional bodies to be inlined. To obtain
-- further inlining, we keep looping over the inlined bodies.
end if;
end loop;
-- The list of inlined subprograms is an overestimate, because it -- The list of inlined subprograms is an overestimate, because it
-- includes inlined functions called from functions that are compiled -- includes inlined functions called from functions that are compiled
......
...@@ -1630,7 +1630,7 @@ package body Prj.Conf is ...@@ -1630,7 +1630,7 @@ package body Prj.Conf is
-- Start with ignoring missing withed projects -- Start with ignoring missing withed projects
Update_Ignore_Missing_With (Env.Flags, True); Set_Ignore_Missing_With (Env.Flags, True);
-- Note: If in fact the config file is automatically generated, then -- Note: If in fact the config file is automatically generated, then
-- Automatically_Generated will be set to True after invocation of -- Automatically_Generated will be set to True after invocation of
...@@ -1751,7 +1751,7 @@ package body Prj.Conf is ...@@ -1751,7 +1751,7 @@ package body Prj.Conf is
-- update the project path and try again. -- update the project path and try again.
if Main_Project /= No_Project and then Config_Try_Again then if Main_Project /= No_Project and then Config_Try_Again then
Update_Ignore_Missing_With (Env.Flags, False); Set_Ignore_Missing_With (Env.Flags, False);
if Config_File_Path /= null then if Config_File_Path /= null then
Conf_File_Name := new String'(Config_File_Path.all); Conf_File_Name := new String'(Config_File_Path.all);
......
...@@ -2147,16 +2147,17 @@ package body Prj is ...@@ -2147,16 +2147,17 @@ package body Prj is
(Root_Project, Root_Tree, Project_Context'(False, False)); (Root_Project, Root_Tree, Project_Context'(False, False));
end For_Project_And_Aggregated_Context; end For_Project_And_Aggregated_Context;
-------------------------------- -----------------------------
-- Update_Ignore_Missing_With -- -- Set_Ignore_Missing_With --
-------------------------------- -----------------------------
procedure Update_Ignore_Missing_With procedure Set_Ignore_Missing_With
(Flags : in out Processing_Flags; Value : Boolean) (Flags : in out Processing_Flags;
Value : Boolean)
is is
begin begin
Flags.Ignore_Missing_With := Value; Flags.Ignore_Missing_With := Value;
end Update_Ignore_Missing_With; end Set_Ignore_Missing_With;
-- Package initialization for Prj -- Package initialization for Prj
......
...@@ -1893,9 +1893,10 @@ package Prj is ...@@ -1893,9 +1893,10 @@ package Prj is
-- * user project also includes a "with" that can only be resolved -- * user project also includes a "with" that can only be resolved
-- once we have found the gnatls -- once we have found the gnatls
procedure Update_Ignore_Missing_With procedure Set_Ignore_Missing_With
(Flags : in out Processing_Flags; Value : Boolean); (Flags : in out Processing_Flags;
-- Update the value of component Ignore_Missing_With in Flags with Value Value : Boolean);
-- Set the value of component Ignore_Missing_With in Flags to Value
Gprbuild_Flags : constant Processing_Flags; Gprbuild_Flags : constant Processing_Flags;
Gprinstall_Flags : constant Processing_Flags; Gprinstall_Flags : constant Processing_Flags;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment