diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-06-29 18:51:03 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-10-23 17:44:52 +0200 |
| commit | a80921db90cd8de52b2fa37bf61e6156dd3a6bcd (patch) | |
| tree | 337f1290bbe99d22f126355768df75916e561a39 /simplify.c | |
| parent | cfca7b4c6cb48283cb554fc91dc859ff669f2547 (diff) | |
| download | sparse-dev-a80921db90cd8de52b2fa37bf61e6156dd3a6bcd.tar.gz | |
simplify unsigned compares against 0
Some unsigned compares against 0 are always true or always false
(x < 0 or x >= 0). Simplify them.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'simplify.c')
| -rw-r--r-- | simplify.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1173,6 +1173,16 @@ static int simplify_constant_rightside(struct instruction *insn) case OP_SET_NE: case OP_SET_EQ: return simplify_seteq_setne(insn, value); + case OP_SET_B: + if (!value) { // (x < 0) --> 0 + return replace_with_pseudo(insn, value_pseudo(0)); + } + break; + case OP_SET_AE: + if (!value) { // (x >= 0) --> 1 + return replace_with_pseudo(insn, value_pseudo(1)); + } + break; } return 0; } |
