OSDN Git Service

2007-09-11 Javier Miranda <miranda@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 11 Sep 2007 11:03:53 +0000 (11:03 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 11 Sep 2007 11:03:53 +0000 (11:03 +0000)
commit7854e19042c04919a46f4fe959ab76488f540e13
tree4db01ac852882703a2f03544035ffda5e79c4e04
parent84e10000f8723c1d32c99afcd38a39316e5f5a90
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128368 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_disp.adb
gcc/ada/freeze.adb