Commit 861f090e by Ed Schonberg Committed by Arnaud Charlet

sem_ch12.adb (Analyze_Package_Instantiation): Inline_Now is false if the current…

sem_ch12.adb (Analyze_Package_Instantiation): Inline_Now is false if the current instance is nested within another instance...

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Inline_Now is false if
	the current instance is nested within another instance in a child unit.

From-SVN: r111192
parent 9af38f0c
......@@ -2710,16 +2710,24 @@ package body Sem_Ch12 is
end if;
-- If the current scope is itself an instance within a child
-- unit, and that unit itself is not an instance, it is
-- duplicated in the scope stack, and the unstacking mechanism
-- in Inline_Instance_Body will fail. This loses some rare
-- cases of optimization, and might be improved some day ????
if Is_Generic_Instance (Current_Scope)
and then Is_Child_Unit (Scope (Current_Scope))
and then not Is_Generic_Instance (Scope (Current_Scope))
then
Inline_Now := False;
-- unit,there will be duplications in the scope stack, and the
-- unstacking mechanism in Inline_Instance_Body will fail.
-- This loses some rare cases of optimization, and might be
-- improved some day, if we can find a proper abstraction for
-- "the complete compilation context" that can be saved and
-- restored ???
if Is_Generic_Instance (Current_Scope) then
declare
Curr_Unit : constant Entity_Id :=
Cunit_Entity (Current_Sem_Unit);
begin
if Curr_Unit /= Current_Scope
and then Is_Child_Unit (Curr_Unit)
then
Inline_Now := False;
end if;
end;
end if;
end if;
......
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