+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>
* exp_ch7.adb, sem_ch5.adb, sem_ch7.adb, sem_util.adb,
end if;
J := J + 1;
- end loop;
- -- The analysis of required bodies may have produced additional
- -- generic instantiations. To obtain further inlining, we perform
- -- another round of generic body instantiations. Establishing a
- -- fully recursive loop between inlining and generic instantiations
- -- is unlikely to yield more than this one additional pass.
+ if J > Inlined_Bodies.Last then
+
+ -- The analysis of required bodies may have produced additional
+ -- generic instantiations. To obtain further inlining, we need
+ -- 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
-- includes inlined functions called from functions that are compiled
-- 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
-- Automatically_Generated will be set to True after invocation of
-- update the project path and try again.
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
Conf_File_Name := new String'(Config_File_Path.all);
(Root_Project, Root_Tree, Project_Context'(False, False));
end For_Project_And_Aggregated_Context;
- --------------------------------
- -- Update_Ignore_Missing_With --
- --------------------------------
+ -----------------------------
+ -- Set_Ignore_Missing_With --
+ -----------------------------
- procedure Update_Ignore_Missing_With
- (Flags : in out Processing_Flags; Value : Boolean)
+ procedure Set_Ignore_Missing_With
+ (Flags : in out Processing_Flags;
+ Value : Boolean)
is
begin
Flags.Ignore_Missing_With := Value;
- end Update_Ignore_Missing_With;
+ end Set_Ignore_Missing_With;
-- Package initialization for Prj
-- * user project also includes a "with" that can only be resolved
-- once we have found the gnatls
- procedure Update_Ignore_Missing_With
- (Flags : in out Processing_Flags; Value : Boolean);
- -- Update the value of component Ignore_Missing_With in Flags with Value
+ procedure Set_Ignore_Missing_With
+ (Flags : in out Processing_Flags;
+ Value : Boolean);
+ -- Set the value of component Ignore_Missing_With in Flags to Value
Gprbuild_Flags : constant Processing_Flags;
Gprinstall_Flags : constant Processing_Flags;