aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/simplify.c
diff options
Diffstat (limited to 'simplify.c')
-rw-r--r--simplify.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/simplify.c b/simplify.c
index 41e2584a..9b700abc 100644
--- a/simplify.c
+++ b/simplify.c
@@ -552,6 +552,14 @@ static int simplify_shift(struct instruction *insn, pseudo_t pseudo, long long v
warning(insn->pos, "right shift by bigger than source value");
insn->tainted = 1;
}
+ switch (insn->opcode) {
+ case OP_ASR:
+ break;
+ case OP_LSR:
+ size = operand_size(insn, pseudo);
+ if (value >= size)
+ return replace_with_pseudo(insn, value_pseudo(0));
+ }
return 0;
}