[Ada] Fix internal error on subprogram instantiation with -gnatzc
This fixes a fallout of the recent change keeping the Is_Generic_Instance flag on the wrapper package built for the instantiation of a generic subprogram. There is no need to visit the Instance_Spec of an N_Subprogram_Instantiation node anymore because the regular processing for an N_Package_Declaration node now does the job for instantiations of generic subprograms. The following subprogram must compile again quietly with -gnatzc: with Gen_Proc; package RCI is pragma Remote_Call_Interface; procedure Inst_Proc is new Gen_Proc; procedure P (S : String); end RCI; generic procedure Gen_Proc (S : String); pragma Remote_Call_Interface (Gen_Proc); with Ada.Text_IO; use Ada.Text_IO; procedure Gen_Proc (S : String) is begin Put_Line ("Gen_Proc called: " & S); end Gen_Proc; 2019-08-19 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_dist.adb (Build_Package_Stubs): Do not specifically visit the declarations of an N_Subprogram_Instantiation node. From-SVN: r274647
This commit is contained in:
parent
d41f5c1fac
commit
27b2fbc95c
@ -1,3 +1,8 @@
|
||||
2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* exp_dist.adb (Build_Package_Stubs): Do not specifically visit
|
||||
the declarations of an N_Subprogram_Instantiation node.
|
||||
|
||||
2019-08-19 Bob Duff <duff@adacore.com>
|
||||
|
||||
* doc/gnat_ugn/gnat_utility_programs.rst: Document missing
|
||||
|
@ -963,10 +963,8 @@ package body Exp_Dist is
|
||||
when N_Package_Declaration =>
|
||||
|
||||
-- Case of a nested package or package instantiation coming
|
||||
-- from source. Note that the anonymous wrapper package for
|
||||
-- subprogram instances is not flagged Is_Generic_Instance at
|
||||
-- this point, so there is a distinct circuit to handle them
|
||||
-- (see case N_Subprogram_Instantiation below).
|
||||
-- from source, including the wrapper package for an instance
|
||||
-- of a generic subprogram.
|
||||
|
||||
declare
|
||||
Pkg_Ent : constant Entity_Id :=
|
||||
@ -982,16 +980,6 @@ package body Exp_Dist is
|
||||
end if;
|
||||
end;
|
||||
|
||||
when N_Subprogram_Instantiation =>
|
||||
|
||||
-- The subprogram declaration for an instance of a generic
|
||||
-- subprogram is wrapped in a package that does not come from
|
||||
-- source, so we need to explicitly traverse it here.
|
||||
|
||||
if Comes_From_Source (Decl) then
|
||||
Visit_Nested_Pkg (Instance_Spec (Decl));
|
||||
end if;
|
||||
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
|
Loading…
Reference in New Issue
Block a user