diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2023-03-24 18:09:48 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-05-26 09:29:18 +0200 |
commit | d97ab77cc828c48a6d0dca6f955e91a77f40dbf9 (patch) | |
tree | 238f87570d604da63dede6d9dce66eb91659fa34 /gcc | |
parent | 34c71b0472f8d3d681adffc100b054be0cb14a15 (diff) | |
download | gcc-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.adb | 17 |
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; |