diff options
author | Arnaud Charlet <charlet@adacore.com> | 2020-06-19 09:50:34 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-07-27 04:05:21 -0400 |
commit | 04c4a5101bb6c18933af3b3c3daf8053660cc1b6 (patch) | |
tree | b61278f84daf731cecccb5cd743a8e57c4188545 | |
parent | cb030dd7350381e47bdb168517507426ad23a297 (diff) | |
download | gcc-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.adb | 7 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 6 |
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; |