einfo.ads, einfo.adb (Dispatch_Table_Wrapper): New attribute.
authorJavier Miranda <miranda@adacore.com>
Tue, 11 Sep 2007 11:03:53 +0000 (13:03 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 11 Sep 2007 11:03:53 +0000 (13:03 +0200)
commit7986e000a93bd150c589470b8cb81ad3489fa250
tree4db01ac852882703a2f03544035ffda5e79c4e04
parente89d6010089634063adfeeec679ac7fbf6afa4e6
einfo.ads, einfo.adb (Dispatch_Table_Wrapper): New attribute.

2007-09-11  Javier Miranda  <miranda@adacore.com>

* einfo.ads, einfo.adb (Dispatch_Table_Wrapper): New attribute. Present
in library level record type entities if we are generating statically
allocated dispatch tables.

* exp_disp.adb (Make_Tags/Make_DT): Replace previous code
importing/exporting the _tag declaration by new code
importing/exporting the dispatch table wrapper. This change allows us
to statically allocate of the TSD.
(Make_DT.Export_DT): New procedure.
(Build_Static_DT): New function.
(Has_DT): New function.

* freeze.adb (Freeze_Static_Object): Code cleanup: Do not reset flags
True_Constant and Current_Value. Required to statically
allocate the dispatch tables.
(Check_Allocator): Make function iterative instead of recursive.
  Also return inner allocator node, when present, so that we do not have
  to look for that node again in the caller.

From-SVN: r128368
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_disp.adb
gcc/ada/freeze.adb