exp_ch4.adb (Complete_Coextension_Finalization): Add machinery to handle the creation of finalization lists and calls for nested... 2007-04-20 Javier Miranda <miranda@adacore.com> Hristian Kirtchev <kirtchev@adacore.com> Bob Duff <duff@adacore.com> * exp_ch4.adb (Complete_Coextension_Finalization): Add machinery to handle the creation of finalization lists and calls for nested coextensions when the root of the chains is part of a return statement. (Inside_A_Return_Statement): New function inside Complete_Coextension_ Finalization. (Expand_Record_Equality): Skip components that are interface types. (Displace_Allocator_Pointer): Add missing support for interface subtypes (Expand_N_Allocator): Replace invocation of Is_Local_Access_Discriminant with Rewrite_Coextension. Change the condition for detecting coextension root nodes. (Is_Local_Access_Discriminant): Removed. (Rewrite_Coextension): New routine which rewrites a static coextension as a temporary and uses its unrestricted access in the construction of the outer object. (Complete_Coextension_Finalization): New routine. Generate finalization attachment calls to all delayed coextensions. (Expand_N_Allocator): Call Complete_Coextension_Finalization whenever the allocator is not a coextension itself and has delayed coextensions. If the current allocator is controlled, but also a coextension, delay the generation of the finalization attachment call. Rename local variable "Node" to "Nod" in order to avoid confusion with "Elists.Node". (Expand_Allocator_Expression): Call Adjust for initialized allocators of limited types that are not inherently limited. Such an allocator is illegal, but is generated by the expander for a return statement, to copy the result onto the secondary stack. This is the only case where a limited object can be copied. Generate code to displace the pointer to the object if the qualified expression is a class-wide interface object. Such displacement was missing and hence the copy of the object was wrong. (Apply_Accessibility_Check): Handle allocated objects initialized in place. (Displace_Allocator_Pointer): Subsidiary procedure to Expand_N_Allocator and Expand_Allocator_Expression. Allocating class-wide interface objects this routine displaces the pointer to the allocated object to reference the component referencing the corresponding secondary dispatch table. Expand_Allocator_Expression): Add missing support to allocate class-wide interface objects initialized with a qualified expression. (Get_Allocator_Final_List): Test for an anonymous access type that is a function result type, and use the finalization list associated with the function scope in that case (such an anonymous type should not be treated like an access parameter's type). From-SVN: r125397
Name |
Last commit
|
Last update |
---|---|---|
INSTALL | Loading commit data... | |
boehm-gc | Loading commit data... | |
config | Loading commit data... | |
contrib | Loading commit data... | |
fixincludes | Loading commit data... | |
gcc | Loading commit data... | |
gnattools | Loading commit data... | |
include | Loading commit data... | |
intl | Loading commit data... | |
libada | Loading commit data... | |
libcpp | Loading commit data... | |
libdecnumber | Loading commit data... | |
libffi | Loading commit data... | |
libgcc | Loading commit data... | |
libgfortran | Loading commit data... | |
libgomp | Loading commit data... | |
libiberty | Loading commit data... | |
libjava | Loading commit data... | |
libmudflap | Loading commit data... | |
libobjc | Loading commit data... | |
libssp | Loading commit data... | |
libstdc++-v3 | Loading commit data... | |
maintainer-scripts | Loading commit data... | |
zlib | Loading commit data... | |
ABOUT-NLS | Loading commit data... | |
COPYING | Loading commit data... | |
COPYING.LIB | Loading commit data... | |
ChangeLog | Loading commit data... | |
ChangeLog.tree-ssa | Loading commit data... | |
MAINTAINERS | Loading commit data... | |
Makefile.def | Loading commit data... | |
Makefile.in | Loading commit data... | |
Makefile.tpl | Loading commit data... | |
README | Loading commit data... | |
README.SCO | Loading commit data... | |
compile | Loading commit data... | |
config-ml.in | Loading commit data... | |
config.guess | Loading commit data... | |
config.rpath | Loading commit data... | |
config.sub | Loading commit data... | |
configure | Loading commit data... | |
configure.ac | Loading commit data... | |
depcomp | Loading commit data... | |
install-sh | Loading commit data... | |
libtool-ldflags | Loading commit data... | |
libtool.m4 | Loading commit data... | |
ltgcc.m4 | Loading commit data... | |
ltmain.sh | Loading commit data... | |
ltoptions.m4 | Loading commit data... | |
ltsugar.m4 | Loading commit data... | |
ltversion.m4 | Loading commit data... | |
missing | Loading commit data... | |
mkdep | Loading commit data... | |
mkinstalldirs | Loading commit data... | |
move-if-change | Loading commit data... | |
symlink-tree | Loading commit data... | |
ylwrap | Loading commit data... |