From e783561e9c10f84a9a1a23d81bb9510f961c4c61 Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Thu, 12 Nov 2020 14:40:39 -0500 Subject: [PATCH] [Ada] Compiler crash on limited conditional expressions gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Avoid crash in case of conditional expression. --- gcc/ada/exp_ch3.adb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index f8b6ee68d6a..bd2de67fa8a 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -7403,12 +7403,12 @@ package body Exp_Ch3 is -- If we cannot convert the expression into a renaming we must -- consider it an internal error because the backend does not - -- have support to handle it. Also, when a raise expression is - -- encountered we ignore it since it doesn't return a value and - -- thus cannot trigger a copy. + -- have support to handle it. But avoid crashing on a raise + -- expression or conditional expression. - elsif Nkind (Original_Node (Expr_Q)) /= N_Raise_Expression then - pragma Assert (False); + elsif Nkind (Original_Node (Expr_Q)) not in + N_Raise_Expression | N_If_Expression | N_Case_Expression + then raise Program_Error; end if; -- 2.30.2