aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Creuse <creuse@adacore.com>2023-07-13 12:30:42 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-07-28 09:28:15 +0200
commit808ac54287901a344080b42e78c181a0c3566ccf (patch)
treefbc0d82bb5f6c7b9da2180482c670e083d1ae738
parent5bd09a25b342f980f0596c9e354c54a4c635ec65 (diff)
downloadgcc-808ac54287901a344080b42e78c181a0c3566ccf.zip
gcc-808ac54287901a344080b42e78c181a0c3566ccf.tar.gz
gcc-808ac54287901a344080b42e78c181a0c3566ccf.tar.bz2
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.
-rw-r--r--gcc/ada/par_sco.adb6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index c3aa2a5..ce7de7f 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