diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2022-06-24 19:28:53 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2022-07-13 10:01:21 +0000 |
commit | 258814a99e74fcc1ab9cccb16b4d14c997d83690 (patch) | |
tree | 494f48ab3edd0d17a82afcc3d75c0e54d61a0585 /gcc/ada/gcc-interface/decl.cc | |
parent | 36ed32caf8708a1fb646cdf8e92f2c1b86c68ae9 (diff) | |
download | gcc-258814a99e74fcc1ab9cccb16b4d14c997d83690.zip gcc-258814a99e74fcc1ab9cccb16b4d14c997d83690.tar.gz gcc-258814a99e74fcc1ab9cccb16b4d14c997d83690.tar.bz2 |
[Ada] Also deal with private actual types in latest change
gcc/ada/
* gcc-interface/decl.cc (Gigi_Cloned_Subtype): Handle private case.
Diffstat (limited to 'gcc/ada/gcc-interface/decl.cc')
-rw-r--r-- | gcc/ada/gcc-interface/decl.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 8449c99..53c8461 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -5171,6 +5171,19 @@ Gigi_Cloned_Subtype (Entity_Id gnat_entity) && Present (Generic_Parent_Type (gnat_decl)) && Is_Entity_Name (Subtype_Indication (gnat_decl))) return Entity (Subtype_Indication (gnat_decl)); + + /* Likewise for the full view of such subtypes when they are private. */ + if (Is_Itype (gnat_entity)) + { + gnat_decl = Associated_Node_For_Itype (gnat_entity); + if (Present (gnat_decl) + && Nkind (gnat_decl) == N_Subtype_Declaration + && Is_Private_Type (Defining_Identifier (gnat_decl)) + && Full_View (Defining_Identifier (gnat_decl)) == gnat_entity + && Present (Generic_Parent_Type (gnat_decl)) + && Is_Entity_Name (Subtype_Indication (gnat_decl))) + return Entity (Subtype_Indication (gnat_decl)); + } break; default: |