a79ec8c58c
2007-04-20 Ed Schonberg <schonberg@adacore.com> Gary Dismukes <dismukes@adacore.com> Javier Miranda <miranda@adacore.com> * exp_ch5.adb (Expand_N_Assignment_Statement): For the assignment of a controlled type, use Make_Handler_For_Ctrl_Operation to construct the required exception handler. (Expand_Simple_Function_Return, Expand_N_Return_Statement): Handle properly the case of a function whose return type is a limited class-wide interface type. Modify the code of the accessibility check to handle class-wide interface objects. In this case we need to displace "this" to reference the primary dispatch table to get access to the TSD of the object (to evaluate its accessibility level). (Expand_N_Extended_Return_Statement): Test for a tagged result type rather than a controlling result as one of the conditions for generating tests of the implicit BIP_Alloc_Form formal. The initialization assignment is also handled according to whether the result is tagged instead of controlling. In the case where the init assignment is inserted in the "then" part of the allocation conditional, rewrite the target to be a dereference of the implicit BIP_Object_Access formal. If the returned value is unconstrained and created on the secondary stack, mark the enclosing block and function so that the secondary stack is not reclaimed on return. Treat returns from functions with controlling results similarly to returns from functions with unconstrained result subtypes. If the object returned is unconstrained, and an allocator must be created for it, analyze the allocator once the block for the extended return is installed, to ensure that finalizable components of the expression use the proper finalization list. Guard the call to Move_Final_List with a check that there is something to finalize. (Make_Tag_Ctrl_Assignment): Use "old" handling of controlled type assignment for virtual machines, since new code uses unsupported features (such as direct access to bytes in memory). From-SVN: r125398 |
||
---|---|---|
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.