mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-15 02:59:38 +08:00
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 |
||
---|---|---|
boehm-gc | ||
config | ||
contrib | ||
fixincludes | ||
gcc | ||
gnattools | ||
include | ||
INSTALL | ||
intl | ||
libada | ||
libcpp | ||
libdecnumber | ||
libffi | ||
libgcc | ||
libgfortran | ||
libgomp | ||
libiberty | ||
libjava | ||
libmudflap | ||
libobjc | ||
libssp | ||
libstdc++-v3 | ||
maintainer-scripts | ||
zlib | ||
ABOUT-NLS | ||
ChangeLog | ||
ChangeLog.tree-ssa | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
COPYING.LIB | ||
depcomp | ||
install-sh | ||
libtool-ldflags | ||
libtool.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
README | ||
README.SCO | ||
symlink-tree | ||
ylwrap |
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the file COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs.html for how to report bugs usefully.