aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2021-12-01 12:28:00 -0500
committerPierre-Marie de Rodat <derodat@adacore.com>2022-01-05 11:32:37 +0000
commitf3799ac534385c72f72d97aa142aa4f9c0d72849 (patch)
treef53a89909a6a0a698b61c961d7f8caa90273f35c
parent76cc077330f98d511eda444e94a570b616616c9e (diff)
downloadgcc-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.adb10
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;