diff options
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 871a309..80dfc55 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -446,7 +446,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) /* If we get here, it means we have not yet done anything with this entity. If we are not defining it, it must be a type or an entity that is defined - elsewhere or externally, otherwise we should have defined it already. */ + elsewhere or externally, otherwise we should have defined it already. + + One exception is for an entity, typically an inherited operation, which is + a local alias for the parent's operation. It is neither defined, since it + is an inherited operation, nor public, since it is declared in the current + compilation unit, so we test Is_Public on the Alias entity instead. */ gcc_assert (definition || is_type || kind == E_Discriminant @@ -454,6 +459,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) || kind == E_Label || (kind == E_Constant && Present (Full_View (gnat_entity))) || Is_Public (gnat_entity) + || (Present (Alias (gnat_entity)) + && Is_Public (Alias (gnat_entity))) || type_annotate_only); /* Get the name of the entity and set up the line number and filename of |