diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:38:00 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:38:00 +0000 |
commit | c6eb017a825a226c0506e038e5a0722e833892e5 (patch) | |
tree | 20310562d97b1530165e6f9980e07e7470bf0d34 /gcc/ada/rtsfind.ads | |
parent | 18a40e9785d07da1e1f40b2a3a1c63144a40b64b (diff) | |
download | gcc-c6eb017a825a226c0506e038e5a0722e833892e5.tar.gz |
2006-02-13 Javier Miranda <miranda@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for
availability of RE_Interface_Tag.
(Build_Initialization_Call): Fix wrong access to the discriminant value.
(Freeze_Record_Type): Do not generate the tables associated with
timed and conditional dispatching calls through synchronized
interfaces if compiling under No_Dispatching_Calls restriction.
When compiling for Ada 2005, for a nonabstract
type with a null extension, call Make_Controlling_Function_Wrappers
and insert the wrapper function declarations and bodies (the latter
being appended as freeze actions).
(Predefined_Primitive_Bodies): Do not generate the bodies of the
predefined primitives associated with timed and conditional
dispatching calls through synchronized interfaces if we are
compiling under No_Dispatching_Calls.
(Build_Init_Procedure): Use RTE_Available to check if a run-time
service is available before generating a call.
(Make_Controlling_Function_Wrappers): New procedure.
(Expand_N_Full_Type_Declaration): Create a class-wide master for
access-to-limited-interfaces because they can be used to reference
tasks that implement such limited interface.
(Build_Offset_To_Top_Functions): Build the tree corresponding to the
procedure spec and body of the Offset_To_Top function that is generated
when the parent of a type with discriminants has secondary dispatch
tables.
(Init_Secondary_Tags): Handle the case in which the parent of the type
containing secondary dispatch tables has discriminants to generate the
correct arguments to call Set_Offset_To_Top.
(Build_Record_Init_Proc): Add call to Build_Offset_To_Top_Functions.
* a-tags.ads, a-tags.adb: (Check_Index): Removed.
Add Wide_[Wide_]Expanded_Name.
(Get_Predefined_Prim_Op_Address): New subprogram that provides exactly
the same functionality of Get_Prim_Op_Address but applied to predefined
primitive operations because the pointers to the predefined primitives
are now saved in a separate table.
(Parent_Size): Modified to get access to the separate table of primitive
operations or the parent type.
(Set_Predefined_Prim_Op_Address): New subprogram that provides the same
functionality of Set_Prim_Op_Address but applied to predefined primitive
operations.
(Set_Signature): New subprogram used to store the signature of a DT.
(Displace): If the Offset_To_Top value is not static then call the
function generated by the expander to get such value; otherwise use
the value stored in the table of interfaces.
(Offset_To_Top): The type of the actual has been changed to Address to
give the correct support to tagged types with discriminants. In this
case this value is stored just immediately after the tag field.
(Set_Offset_To_Top): Two new formals have been added to indicate if the
offset_to_top value is static and hence pass this value to the run-time
to store it in the table of interfaces, or else if this value is dynamic
and then pass to the run-time the address of a function that is
generated by the expander to provide this value for each object of the
type.
* rtsfind.ads (Default_Prin_Op_Count): Removed.
(Default_Prim_Op_Count): New entity
(Get_Predefined_Prim_Op_Address): New entity
(Set_Predefined_Prim_Op_Address): New entity
(RE_Set_Signature): New entity
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111059 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/rtsfind.ads')
-rw-r--r-- | gcc/ada/rtsfind.ads | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads index 3b4522c85f9..acc7ac925db 100644 --- a/gcc/ada/rtsfind.ads +++ b/gcc/ada/rtsfind.ads @@ -502,6 +502,7 @@ package Rtsfind is RE_Get_Entry_Index, -- Ada.Tags RE_Get_External_Tag, -- Ada.Tags RE_Get_Offset_Index, -- Ada.Tags + RE_Get_Predefined_Prim_Op_Address, -- Ada.Tags RE_Get_Prim_Op_Address, -- Ada.Tags RE_Get_Prim_Op_Kind, -- Ada.Tags RE_Get_RC_Offset, -- Ada.Tags @@ -539,11 +540,13 @@ package Rtsfind is RE_Set_Offset_Index, -- Ada.Tags RE_Set_Offset_To_Top, -- Ada.Tags RE_Set_OSD, -- Ada.Tags + RE_Set_Predefined_Prim_Op_Address, -- Ada.Tags RE_Set_Prim_Op_Address, -- Ada.Tags RE_Set_Prim_Op_Kind, -- Ada.Tags RE_Set_RC_Offset, -- Ada.Tags RE_Set_Remotely_Callable, -- Ada.Tags RE_Set_SSD, -- Ada.Tags + RE_Set_Signature, -- Ada.Tags RE_Set_Tagged_Kind, -- Ada.Tags RE_Set_TSD, -- Ada.Tags RE_Tag, -- Ada.Tags @@ -1656,6 +1659,7 @@ package Rtsfind is RE_Get_Entry_Index => Ada_Tags, RE_Get_External_Tag => Ada_Tags, RE_Get_Offset_Index => Ada_Tags, + RE_Get_Predefined_Prim_Op_Address => Ada_Tags, RE_Get_Prim_Op_Address => Ada_Tags, RE_Get_Prim_Op_Kind => Ada_Tags, RE_Get_RC_Offset => Ada_Tags, @@ -1693,11 +1697,13 @@ package Rtsfind is RE_Set_Offset_Index => Ada_Tags, RE_Set_Offset_To_Top => Ada_Tags, RE_Set_OSD => Ada_Tags, + RE_Set_Predefined_Prim_Op_Address => Ada_Tags, RE_Set_Prim_Op_Address => Ada_Tags, RE_Set_Prim_Op_Kind => Ada_Tags, RE_Set_RC_Offset => Ada_Tags, RE_Set_Remotely_Callable => Ada_Tags, RE_Set_SSD => Ada_Tags, + RE_Set_Signature => Ada_Tags, RE_Set_Tagged_Kind => Ada_Tags, RE_Set_TSD => Ada_Tags, RE_Tag => Ada_Tags, |