aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2023-08-23 08:14:07 -0400
committerMarc Poulhiès <poulhies@adacore.com>2023-09-05 13:05:15 +0200
commitd54e996a25d34d1cfaa5fd1de5127668bb43755a (patch)
tree73f6ae3a3e123849b7d814755e16c7f07cba2411
parent9be6a698f95f94a27307208cdb90bd2018182071 (diff)
downloadgcc-d54e996a25d34d1cfaa5fd1de5127668bb43755a.zip
gcc-d54e996a25d34d1cfaa5fd1de5127668bb43755a.tar.gz
gcc-d54e996a25d34d1cfaa5fd1de5127668bb43755a.tar.bz2
ada: Fix crash on selected component lookup in generic instance
This patch fixes a compiler crash on selected component lookup in an instance of a generic unit when the relevant type is an itype. gcc/ada/ * sem_ch4.adb (Find_Component_In_Instance): Check that Declaration_Node (Par) is not Empty, as it is for itypes.
-rw-r--r--gcc/ada/sem_ch4.adb10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 8543f0d..50ba6c9 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -5212,10 +5212,14 @@ package body Sem_Ch4 is
end if;
end loop;
- if Present (Par) and then Is_Generic_Actual_Type (Par) then
-
- -- Now look for component in ancestor types
+ -- If Par is a generic actual, look for component in ancestor types.
+ -- Skip this if we have no Declaration_Node, as is the case for
+ -- itypes.
+ if Present (Par)
+ and then Is_Generic_Actual_Type (Par)
+ and then Present (Declaration_Node (Par))
+ then
Par := Generic_Parent_Type (Declaration_Node (Par));
loop
Find_Component_In_Instance (Par);