From: Ronan Desplanques <desplanq...@adacore.com> A recently fixed bug caused an infinite loop when assertions were not checked. With assertions checked, the symptom was just an internal error caused by an assertion failure. This patch makes it so that if another bug ever causes the same condition to fail, there will never be an infinite loop with any assertion policy.
gcc/ada/ChangeLog: * sem_ch3.adb (Access_Subprogram_Declaration): Replace assertion with more defensive code. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch3.adb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 11f69db21dc..5df949aa667 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -1100,7 +1100,9 @@ package body Sem_Ch3 is | N_Protected_Type_Declaration loop D_Ityp := Parent (D_Ityp); - pragma Assert (D_Ityp /= Empty); + if No (D_Ityp) then + raise Program_Error; + end if; end loop; Set_Associated_Node_For_Itype (Desig_Type, D_Ityp); -- 2.43.0