From d8f9641dc9d6061211f0caf3359ed0f0648d4013 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 1 Jun 2022 23:01:50 +0100 Subject: [PATCH] VarAction2: Remove redundant UMIN operation on already boolean values --- src/newgrf.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 3e5736b244..203fc49338 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -5837,7 +5837,16 @@ static void OptimiseVarAction2Adjust(VarAction2OptimiseState &state, const GrfSp } break; case DSGA_OP_UMIN: - if (adjust.and_mask <= 1) state.inference = VA2AIF_SIGNED_NON_NEGATIVE | VA2AIF_ONE_OR_ZERO; + if (adjust.and_mask == 1) { + if (prev_inference & VA2AIF_ONE_OR_ZERO) { + /* Delete useless bool -> bool conversion */ + group->adjusts.pop_back(); + state.inference = prev_inference; + break; + } else { + state.inference = VA2AIF_SIGNED_NON_NEGATIVE | VA2AIF_ONE_OR_ZERO; + } + } break; case DSGA_OP_AND: if ((prev_inference & VA2AIF_PREV_MASK_ADJUST) && adjust.variable == 0x1A && adjust.shift_num == 0) {