Eric Botcazou d71753da57 [Ada] Fix internal error on package instantiation on private type
This fixes an assertion failure in gigi triggered by the instantiation
of a generic package, in a visible part of another package, done on a
private type whose full view is a type derived from a scalar or an
access type.

The problem is that the front-end creates and inserts two different
freeze nodes in the expanded tree for the partial and the full views of
the private subtype created by the instantiation, which is not correct:
partial and full views of a given (sub)type must point to the same
freeze node, if any.

The patch also adds an assertion checking this property in the front-end
so as to catch the inconsistency higher in the chain.

2018-12-03  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* freeze.adb (Freeze_Entity): Do not freeze the partial view of
	a private subtype if its base type is also private with delayed
	freeze before the full type declaration of the base type has
	been seen.
	* sem_ch7.adb (Preserve_Full_Attributes): Add assertion on
	freeze node.

gcc/testsuite/

	* gnat.dg/generic_inst2.adb, gnat.dg/generic_inst2.ads,
	gnat.dg/generic_inst2_c.ads: New testcase.

From-SVN: r266754
2018-12-03 15:49:17 +00:00
2018-11-27 12:29:56 +10:30
2018-11-28 08:21:15 +00:00
2018-07-06 06:22:08 +00:00
2018-11-28 19:55:28 +05:30

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with 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/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.
Description
No description provided
Readme 2.1 GiB
Languages
C++ 31.9%
C 31.3%
Ada 12%
D 6.5%
Go 6.4%
Other 11.5%