exp_disp.adb (Make_DT, [...]): Set attribute Is_Static_Dispatch_Table
authorJavier Miranda <miranda@adacore.com>
Wed, 26 Mar 2008 07:39:17 +0000 (08:39 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 26 Mar 2008 07:39:17 +0000 (08:39 +0100)
commit1923d2d6716bf5c1c45dbe285e0774f05611be05
tree535fe9f7a2bfeba1b8bafd9aa970c714dda36fad
parent50cff36721cc8783eb7ac2b350dc200688f8e0da
exp_disp.adb (Make_DT, [...]): Set attribute Is_Static_Dispatch_Table

2008-03-26  Javier Miranda  <miranda@adacore.com>

* exp_disp.adb (Make_DT, Make_Secondary_DT): Set attribute
Is_Static_Dispatch_Table
(Build_Dispatch_Tables): Replace calls to Exchange_Entities() by calls
to Exchange_Declarations to exchange the private and full-view. Bug
found working in this issue.
(Expand_Dispatching_Call): Propagate the convention of the subprogram
to the subprogram pointer type.
(Make_Secondary_DT): Replace generation of Prim'Address by
Address (Prim'Unrestricted_Access)
(Make_DT): Replace generation of Prim'Address by
Address (Prim'Unrestricted_Access)
(Make_Disp_*_Bodies): When compiling for a restricted profile, use
simple call form for single entry.
(Make_DT): Handle new contents of Access_Disp_Table (access to dispatch
tables of predefined primitives).
(Make_Secondary_DT): Add support to handle access to dispatch tables of
predefined primitives.
(Make_Tags): Add entities to Access_Dispatch_Table associated with
access to dispatch tables containing predefined primitives.

* exp_ch6.adb (N_Pragma): Chars field removed, use Chars
(Pragma_Identifier (..  instead, adjustments throughout to accomodate
this change.
(Register_Predefined_DT_Entry): Updated to handle the new contents
of attribute Access_Disp_Table (pointers to dispatch tables containing
predefined primitives).

* exp_util.ads, exp_util.adb (Corresponding_Runtime_Package): New
subprogram.
(Find_Interface_ADT): Updated to skip the new contents of attribute
Access_Dispatch_Table (pointers to dispatch tables containing predefined
primitives).

* sem_util.adb (Has_Abstract_Interfaces): Add missing support for
concurrent types.
(Set_Convention): Use new function Is_Access_Subprogram_Type
(Collect_Interfaces_Info): Updated to skip the new contents of attribute
Access_Dispatch_Table (pointers to dispatch tables containing predefined
primitives).

* exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims): Improve
expanded code avoiding calls to Build_Predef_Prims.
(Build_Set_Predefined_Prim_Op_Address): Improve expanded code avoiding
call to Build_Get_Predefined_Prim_Op_Address.

From-SVN: r133564
gcc/ada/exp_atag.adb
gcc/ada/exp_atag.ads
gcc/ada/exp_ch6.adb
gcc/ada/exp_disp.adb
gcc/ada/exp_util.adb
gcc/ada/exp_util.ads
gcc/ada/sem_util.adb