[Ada] Invalid memory access on finalization of class-wide type
gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Skip normal processing for Itypes that are E_Class_Wide_Subtype with Equivalent_Type set.
This commit is contained in:
parent
298339effd
commit
9e10b7002a
1 changed files with 4 additions and 1 deletions
|
@ -335,11 +335,14 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
|
|||
|
||||
/* Since a use of an itype is a definition, process it as such if it is in
|
||||
the main unit, except for E_Access_Subtype because it's actually a use
|
||||
of its base type, see below. */
|
||||
of its base type, and for E_Class_Wide_Subtype with an Equivalent_Type
|
||||
because it's actually a use of the latter type. */
|
||||
if (!definition
|
||||
&& is_type
|
||||
&& Is_Itype (gnat_entity)
|
||||
&& Ekind (gnat_entity) != E_Access_Subtype
|
||||
&& !(Ekind (gnat_entity) == E_Class_Wide_Subtype
|
||||
&& Present (Equivalent_Type (gnat_entity)))
|
||||
&& !present_gnu_tree (gnat_entity)
|
||||
&& In_Extended_Main_Code_Unit (gnat_entity))
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue