This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Static allocation of tagged types runtime type information


This patch completes the expansion of the code associated with
statically allocated dispatch tables to ensure that in case of
library level tagged types the run-time type specific data is also
statically allocated (and hence can be placed into a ROM).

No test available because it would require the analysis of the
generated assembly code (thus depending on the target architecture).

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.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]