From: Justin Squirek Date: Wed, 13 May 2020 22:59:29 +0000 (-0400) Subject: [Ada] Hang on conditional expression as actual X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7bf53b1a612b1fe08d80d823981879486531ea11;p=gcc.git [Ada] Hang on conditional expression as actual gcc/ada/ * exp_ch6.adb (Expand_Branch): Verify the original node is a conditional expression before recursing further. (Insert_Level_Assign): Transform assertion into an explicit raise. --- diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index fb199837734..3ccf0c386c8 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -3947,6 +3947,11 @@ package body Exp_Ch6 is if Nkind (Expression (Assn)) = N_Expression_With_Actions + and then + Nkind_In + (Original_Node (Expression (Assn)), + N_Case_Expression, + N_If_Expression) then Insert_Level_Assign (Expression (Assn)); @@ -3983,7 +3988,10 @@ package body Exp_Ch6 is N_If_Statement); Next (Cond); - pragma Assert (Present (Cond)); + + if No (Cond) then + raise Program_Error; + end if; end loop; -- Iterate through if expression branches