[Ada] Storage error on untagged prefixed subprogram calls with -gnatX
authorGary Dismukes <dismukes@adacore.com>
Fri, 5 Nov 2021 23:30:05 +0000 (19:30 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 1 Dec 2021 10:24:39 +0000 (10:24 +0000)
commit7b4069fb7c00564523f822c7fd94210862eeeae4
tree4b3d2420934416bebd4a0e29465935f0a4dc08ab
parentab5996842789356d512a5eb16e00be244b0b2875
[Ada] Storage error on untagged prefixed subprogram calls with -gnatX

gcc/ada/

* sem_ch3.adb (Analyze_Full_Type_Declaration): If the full type
has a primitives list but its base type doesn't, set the base
type's list to the full type's list (covers certain constrained
cases, such as for arrays).
(Analyze_Incomplete_Type_Decl): Unconditionally initialize an
incomplete type's primitives list.
(Analyze_Subtype_Declaration): Unconditionally set a subtype's
primitives list to the base type's list, so the lists are
shared.
(Build_Derived_Private_Type): Unconditionally initialize a
derived private type's list to a new empty list.
(Build_Derived_Record_Type): Unconditionally initialize a
derived record type's list to a new empty list (now a single
call for tagged and untagged cases).
(Derived_Type_Declaration): Unconditionally initialize a derived
type's list to a new empty list in error cases (when Parent_Type
is undefined or illegal).
(Process_Full_View): Unconditionally copy the primitive
operations from the private view to the full view (rather than
conditioning it on whether extensions are enabled).
* sem_ch7.adb (New_Private_Type): Unconditionally initialize an
untagged private type's primitives list to a new empty list.
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch7.adb