diff options
author | Bob Duff <duff@adacore.com> | 2021-12-01 12:28:00 -0500 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2022-01-05 11:32:37 +0000 |
commit | f3799ac534385c72f72d97aa142aa4f9c0d72849 (patch) | |
tree | f53a89909a6a0a698b61c961d7f8caa90273f35c | |
parent | 76cc077330f98d511eda444e94a570b616616c9e (diff) | |
download | gcc-f3799ac534385c72f72d97aa142aa4f9c0d72849.zip gcc-f3799ac534385c72f72d97aa142aa4f9c0d72849.tar.gz gcc-f3799ac534385c72f72d97aa142aa4f9c0d72849.tar.bz2 |
[Ada] Compiler crash with -gnatR2 and with of child
gcc/ada/
* repinfo.adb (List_Entities): The code was assuming that if we
encounter a package in the current scope, then it must be
a (physically) nested package. That was wrong, because it could
be a child package. Avoid recursing into child packages; they
have not been annotated with representation information, and
-gnatR2 queries that information.
-rw-r--r-- | gcc/ada/repinfo.adb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb index 36ad805..8bf67d3 100644 --- a/gcc/ada/repinfo.adb +++ b/gcc/ada/repinfo.adb @@ -568,12 +568,14 @@ package body Repinfo is end if; end if; - -- Recurse into nested package, but not if they are package - -- renamings (in particular renamings of the enclosing package, - -- as for some Java bindings and for generic instances). + -- Recurse into nested package, but not child packages, and not + -- nested package renamings (in particular renamings of the + -- enclosing package, as for some Java bindings and for generic + -- instances). if Ekind (E) = E_Package then - if No (Renamed_Entity (E)) then + if No (Renamed_Entity (E)) and then not Is_Child_Unit (E) + then List_Entities (E, Bytes_Big_Endian); end if; |