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:
parent
3a3a1fe1f8
commit
ce4e59c46b
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
4
gcc/testsuite/gnat.dg/specs/fe_inlining.ads
Normal file
4
gcc/testsuite/gnat.dg/specs/fe_inlining.ads
Normal file
@ -0,0 +1,4 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-O -gnatN" }
|
||||
with FE_Inlining_Helper;
|
||||
procedure FE_Inlining is new FE_Inlining_Helper;
|
4
gcc/testsuite/gnat.dg/specs/fe_inlining_helper.adb
Normal file
4
gcc/testsuite/gnat.dg/specs/fe_inlining_helper.adb
Normal file
@ -0,0 +1,4 @@
|
||||
procedure FE_Inlining_Helper is
|
||||
begin
|
||||
null;
|
||||
end FE_Inlining_Helper;
|
3
gcc/testsuite/gnat.dg/specs/fe_inlining_helper.ads
Normal file
3
gcc/testsuite/gnat.dg/specs/fe_inlining_helper.ads
Normal file
@ -0,0 +1,3 @@
|
||||
-- { dg-excess-errors "no code generated" }
|
||||
generic
|
||||
procedure FE_Inlining_Helper;
|
Loading…
Reference in New Issue
Block a user