aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-03-24 18:09:48 +0100
committerMarc Poulhiès <poulhies@adacore.com>2023-05-26 09:29:18 +0200
commitd97ab77cc828c48a6d0dca6f955e91a77f40dbf9 (patch)
tree238f87570d604da63dede6d9dce66eb91659fa34 /gcc
parent34c71b0472f8d3d681adffc100b054be0cb14a15 (diff)
downloadgcc-d97ab77cc828c48a6d0dca6f955e91a77f40dbf9.zip
gcc-d97ab77cc828c48a6d0dca6f955e91a77f40dbf9.tar.gz
gcc-d97ab77cc828c48a6d0dca6f955e91a77f40dbf9.tar.bz2
ada: Simplify expansion of set membership
Code cleanup; semantics is unaffected. gcc/ada/ * exp_ch4.adb (Expand_Set_Membership): Simplify by using Evolve_Or_Else.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_ch4.adb17
1 files changed, 7 insertions, 10 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 438cd45..f894da5 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -13198,8 +13198,6 @@ package body Exp_Ch4 is
procedure Expand_Set_Membership (N : Node_Id) is
Lop : constant Node_Id := Left_Opnd (N);
- Alt : Node_Id;
- Res : Node_Id;
function Make_Cond (Alt : Node_Id) return Node_Id;
-- If the alternative is a subtype mark, create a simple membership
@@ -13228,23 +13226,22 @@ package body Exp_Ch4 is
return Cond;
end Make_Cond;
+ -- Local variables
+
+ Alt : Node_Id;
+ Res : Node_Id := Empty;
+
-- Start of processing for Expand_Set_Membership
begin
Remove_Side_Effects (Lop);
- Alt := First (Alternatives (N));
- Res := Make_Cond (Alt);
- Next (Alt);
-
-- We use left associativity as in the equivalent boolean case. This
-- kind of canonicalization helps the optimizer of the code generator.
+ Alt := First (Alternatives (N));
while Present (Alt) loop
- Res :=
- Make_Or_Else (Sloc (Alt),
- Left_Opnd => Res,
- Right_Opnd => Make_Cond (Alt));
+ Evolve_Or_Else (Res, Make_Cond (Alt));
Next (Alt);
end loop;