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;
Tested on x86_64-pc-linux-gnu, committed on trunk
2019-08-19 Eric Botcazou <ebotca...@adacore.com>
gcc/ada/
* exp_dist.adb (Build_Package_Stubs): Do not specifically visit
the declarations of an N_Subprogram_Instantiation node.
--- gcc/ada/exp_dist.adb
+++ gcc/ada/exp_dist.adb
@@ -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;