From: Piotr Trojanek <troja...@adacore.com> Originally loop parameter specification only occurred in loops, but now it also occurs in quantified expressions. This patch guards against flagging non-loop nodes as null loop statements. This was causing internal compiler errors that were only visible with switch -gnatdk, which happens to be default in GNATprove testsuite.
gcc/ada/ChangeLog: * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Only set flag Is_Null_Loop when loop parameter specification comes from a loop and not from a quantified expression. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch5.adb | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index 131195a78c7..4c82e274ddb 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -3303,7 +3303,10 @@ package body Sem_Ch5 is -- set the appropriate flag to remove the loop entirely -- during expansion. - Set_Is_Null_Loop (Loop_Nod); + if Nkind (Loop_Nod) = N_Loop_Statement then + Set_Is_Null_Loop (Loop_Nod); + end if; + Null_Range := True; end if; @@ -3339,7 +3342,9 @@ package body Sem_Ch5 is -- since it is likely that these warnings will be inappropriate -- if the loop never actually executes, which is likely. - Set_Suppress_Loop_Warnings (Loop_Nod); + if Nkind (Loop_Nod) = N_Loop_Statement then + Set_Suppress_Loop_Warnings (Loop_Nod); + end if; -- The other case for a warning is a reverse loop where the -- upper bound is the integer literal zero or one, and the @@ -3441,12 +3446,13 @@ package body Sem_Ch5 is Subtype_Mark (DS)); end if; - Set_Is_Null_Loop (Loop_Nod); - Null_Range := True; + if Nkind (Loop_Nod) = N_Loop_Statement then + Set_Is_Null_Loop (Loop_Nod); - -- Suppress other warnings about the body of the loop, as - -- it will never execute. - Set_Suppress_Loop_Warnings (Loop_Nod); + -- Suppress other warnings about the body of the loop, + -- as it will never execute. + Set_Suppress_Loop_Warnings (Loop_Nod); + end if; end if; end; end if; -- 2.43.0