From 808ac54287901a344080b42e78c181a0c3566ccf Mon Sep 17 00:00:00 2001 From: =?utf8?q?L=C3=A9o=20Creuse?= Date: Thu, 13 Jul 2023 12:30:42 +0200 Subject: [PATCH] ada: Add missing SCO generation for quantified expressions in object decl This change corrects the Has_Decision predicate in par_sco.adb to properly consider predicates of quantified expressions as decisions. gcc/ada/ * par_sco.adb (Has_Decision): Consider that quantified expressions contain decisions. --- gcc/ada/par_sco.adb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index c3aa2a5936e6..ce7de7f3d795 100644 --- a/gcc/ada/par_sco.adb +++ b/gcc/ada/par_sco.adb @@ -398,7 +398,8 @@ package body Par_SCO is function Check_Node (N : Node_Id) return Traverse_Result; -- Determine if Nkind (N) indicates the presence of a decision (i.e. N -- is a logical operator, which is a decision in itself, or an - -- IF-expression whose Condition attribute is a decision). + -- IF-expression whose Condition attribute is a decision, or a + -- quantified expression, whose predicate is a decision). ---------------- -- Check_Node -- @@ -409,10 +410,11 @@ package body Par_SCO is -- If we are not sure this is a logical operator (AND and OR may be -- turned into logical operators with the Short_Circuit_And_Or -- pragma), assume it is. Putative decisions will be discarded if - -- needed in the secord pass. + -- needed in the second pass. if Is_Logical_Operator (N) /= False or else Nkind (N) = N_If_Expression + or else Nkind (N) = N_Quantified_Expression then return Abandon; else -- 2.47.2