exp_smem.adb (Make_Shared_Var_Procs): For a protected type...
2009-04-15 Thomas Quinot <quinot@adacore.com> * exp_smem.adb (Make_Shared_Var_Procs): For a protected type, instantiate generic shared object package with the corresponding record type. From-SVN: r146083
This commit is contained in:
parent
e0568eecc3
commit
a808ba1bfb
@ -1,3 +1,9 @@
|
||||
2009-04-15 Thomas Quinot <quinot@adacore.com>
|
||||
|
||||
* exp_smem.adb (Make_Shared_Var_Procs): For a protected type,
|
||||
instantiate generic shared object package with the corresponding
|
||||
record type.
|
||||
|
||||
2009-04-15 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* system-linux-sparc.ads: Remove obsolete entries.
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
with Atree; use Atree;
|
||||
with Einfo; use Einfo;
|
||||
with Exp_Ch9; use Exp_Ch9;
|
||||
with Exp_Util; use Exp_Util;
|
||||
with Nmake; use Nmake;
|
||||
with Namet; use Namet;
|
||||
@ -286,10 +287,12 @@ package body Exp_Smem is
|
||||
---------------------------
|
||||
|
||||
function Make_Shared_Var_Procs (N : Node_Id) return Node_Id is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Ent : constant Entity_Id := Defining_Identifier (N);
|
||||
Typ : constant Entity_Id := Etype (Ent);
|
||||
Vnm : String_Id;
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Ent : constant Entity_Id := Defining_Identifier (N);
|
||||
Typ : constant Entity_Id := Etype (Ent);
|
||||
Vnm : String_Id;
|
||||
Obj : Node_Id;
|
||||
Obj_Typ : Entity_Id;
|
||||
|
||||
After : constant Node_Id := Next (N);
|
||||
-- Node located right after N originally (after insertion of the SV
|
||||
@ -316,7 +319,14 @@ package body Exp_Smem is
|
||||
|
||||
-- Construct generic package instantiation
|
||||
|
||||
-- package varG is new Shared_Var_Procs (Typ, var, "pkg.var");
|
||||
-- package varG is new Shared_Var_Procs (typ, var, "pkg.var");
|
||||
|
||||
Obj := New_Occurrence_Of (Ent, Loc);
|
||||
Obj_Typ := Typ;
|
||||
if Is_Concurrent_Type (Typ) then
|
||||
Obj := Convert_Concurrent (N => Obj, Typ => Typ);
|
||||
Obj_Typ := Corresponding_Record_Type (Typ);
|
||||
end if;
|
||||
|
||||
Instantiation :=
|
||||
Make_Package_Instantiation (Loc,
|
||||
@ -324,12 +334,14 @@ package body Exp_Smem is
|
||||
Name =>
|
||||
New_Occurrence_Of (RTE (RE_Shared_Var_Procs), Loc),
|
||||
Generic_Associations => New_List (
|
||||
Make_Generic_Association (Loc, Explicit_Generic_Actual_Parameter =>
|
||||
New_Occurrence_Of (Typ, Loc)),
|
||||
Make_Generic_Association (Loc, Explicit_Generic_Actual_Parameter =>
|
||||
New_Occurrence_Of (Ent, Loc)),
|
||||
Make_Generic_Association (Loc, Explicit_Generic_Actual_Parameter =>
|
||||
Make_String_Literal (Loc, Vnm))));
|
||||
Make_Generic_Association (Loc,
|
||||
Explicit_Generic_Actual_Parameter =>
|
||||
New_Occurrence_Of (Obj_Typ, Loc)),
|
||||
Make_Generic_Association (Loc,
|
||||
Explicit_Generic_Actual_Parameter => Obj),
|
||||
Make_Generic_Association (Loc,
|
||||
Explicit_Generic_Actual_Parameter =>
|
||||
Make_String_Literal (Loc, Vnm))));
|
||||
|
||||
Insert_After_And_Analyze (N, Instantiation);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user