Fix internal error on locally-defined subpools
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 11 Mar 2020 09:47:34 +0000 (10:47 +0100)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 11 Mar 2020 09:56:10 +0000 (10:56 +0100)
commita5aac267e64c578d55e6e269fa9e331f0d01da98
treecfa7841585ac1b78580e5dc396b43b4b81f6419c
parent42bc589e87a326282be2156ddeb18588677c645d
Fix internal error on locally-defined subpools

If the type is derived in the current compilation unit, and Allocate
is not overridden on derivation (as is typically the case with
Root_Storage_Pool_With_Subpools), the entity for Allocate of the
derived type is an alias for System.Storage_Pools.Subpools.Allocate.

The main assertion in gnat_to_gnu_entity fails in this case, since
this is not a definition and Is_Public is false (since the entity
is nested in the same compilation unit).

2020-03-11  Richard Wai  <richard@annexi-strayline.com>

* gcc-interface/decl.c (gnat_to_gnu_entity): Also test Is_Public on
the Alias of the entitiy, if is present, in the main assertion.
gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/subpools1.adb [new file with mode: 0644]