aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2020-06-19 09:50:34 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-07-27 04:05:21 -0400
commit04c4a5101bb6c18933af3b3c3daf8053660cc1b6 (patch)
treeb61278f84daf731cecccb5cd743a8e57c4188545
parentcb030dd7350381e47bdb168517507426ad23a297 (diff)
downloadgcc-04c4a5101bb6c18933af3b3c3daf8053660cc1b6.zip
gcc-04c4a5101bb6c18933af3b3c3daf8053660cc1b6.tar.gz
gcc-04c4a5101bb6c18933af3b3c3daf8053660cc1b6.tar.bz2
[Ada] Assert failure on incorrect code
gcc/ada/ * lib-xref.adb (Generate_Reference): Protect against malformed tree in case of severe errors. * sem_ch8.adb (Add_Implicit_Operator): Ditto.
-rw-r--r--gcc/ada/lib-xref.adb7
-rw-r--r--gcc/ada/sem_ch8.adb6
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index ac59ccc..ae4b4c7 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -595,7 +595,12 @@ package body Lib.Xref is
-- Start of processing for Generate_Reference
begin
- pragma Assert (Nkind (E) in N_Entity);
+ -- May happen in case of severe errors
+
+ if Nkind (E) not in N_Entity then
+ return;
+ end if;
+
Find_Actual (N, Formal, Call);
if Present (Formal) then
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index b0d91e2..3c10a96 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -8212,11 +8212,13 @@ package body Sem_Ch8 is
else
Add_One_Interp (N, Predef_Op2, T);
end if;
-
else
if not Is_Binary_Op then
Add_One_Interp (N, Predef_Op, T);
- else
+
+ -- Predef_Op2 may be empty in case of previous errors
+
+ elsif Present (Predef_Op2) then
Add_One_Interp (N, Predef_Op2, T);
end if;
end if;