re PR ada/28305 (GNAT bug when inlining instance of a generic subprogram)

gcc/ada/
	PR ada/28305
	* sem_ch6.adb (Build_Body_To_Inline): Do not save and restore
	environment if generic instance is a top-level one.

    gcc/testsuite/
	PR ada/28305
	* gnat.dg/specs/fe_inlining.ads, gnat.dg/specs/fe_inlining_helper.ads,
	gnat.dg/specs/fe_inlining_helper.adb: New test.

From-SVN: r134142
This commit is contained in:
Samuel Tardieu 2008-04-09 14:21:18 +00:00 committed by Samuel Tardieu
parent 3a3a1fe1f8
commit ce4e59c46b
6 changed files with 31 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2008-04-09 Samuel Tardieu <sam@rfc1149.net>
PR ada/28305
* sem_ch6.adb (Build_Body_To_Inline): Do not save and restore
environment if generic instance is a top-level one.
2008-04-09 Doug Rupp <rupp@adacore.com>
* decl.c (validate_size): Set minimum size for fat pointers same as

View File

@ -2929,7 +2929,11 @@ package body Sem_Ch6 is
-- Within an instance, the body to inline must be treated as a nested
-- generic, so that the proper global references are preserved.
if In_Instance then
-- Note that we do not do this at the library level, because it is not
-- needed, and furthermore this causes trouble if front end inlining
-- is activated (-gnatN).
if In_Instance and then Scope (Current_Scope) /= Standard_Standard then
Save_Env (Scope (Current_Scope), Scope (Current_Scope));
Original_Body := Copy_Generic_Node (N, Empty, True);
else
@ -2977,7 +2981,9 @@ package body Sem_Ch6 is
Expander_Mode_Restore;
if In_Instance then
-- Restore environment if previously saved
if In_Instance and then Scope (Current_Scope) /= Standard_Standard then
Restore_Env;
end if;

View File

@ -1,3 +1,9 @@
2008-04-09 Samuel Tardieu <sam@rfc1149.net>
PR ada/28305
* gnat.dg/specs/fe_inlining.ads, gnat.dg/specs/fe_inlining_helper.ads,
gnat.dg/specs/fe_inlining_helper.adb: New test.
2008-04-09 Kai Tietz <kai.tietz@onevision.com>
* gcc.dg/torture/fp-int-convert.h: Use TImode type for

View File

@ -0,0 +1,4 @@
-- { dg-do compile }
-- { dg-options "-O -gnatN" }
with FE_Inlining_Helper;
procedure FE_Inlining is new FE_Inlining_Helper;

View File

@ -0,0 +1,4 @@
procedure FE_Inlining_Helper is
begin
null;
end FE_Inlining_Helper;

View File

@ -0,0 +1,3 @@
-- { dg-excess-errors "no code generated" }
generic
procedure FE_Inlining_Helper;