From: Bob Duff Date: Tue, 6 Jul 2021 20:56:58 +0000 (-0400) Subject: [Ada] Remove if_expression X-Git-Tag: basepoints/gcc-13~4570 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=911b00fba9a092448035c0951d5b229819124d20;p=thirdparty%2Fgcc.git [Ada] Remove if_expression gcc/ada/ * sem_eval.adb (Fold_Shift): Replace an if_expression with an if_statement. --- diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index da51caa30a12..6f814069f3ca 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -5063,12 +5063,20 @@ package body Sem_Eval is -- result is always positive, even if the original operand was -- negative. - Fold_Uint - (N, - (Expr_Value (Left) + - (if Expr_Value (Left) >= Uint_0 then Uint_0 else Modulus)) - / (Uint_2 ** Expr_Value (Right)), - Static => Static); + declare + M : Unat; + begin + if Expr_Value (Left) >= Uint_0 then + M := Uint_0; + else + M := Modulus; + end if; + + Fold_Uint + (N, + (Expr_Value (Left) + M) / (Uint_2 ** Expr_Value (Right)), + Static => Static); + end; end if; elsif Op = N_Op_Shift_Right_Arithmetic then Check_Elab_Call;