diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-07-28 10:02:26 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-08-08 09:54:45 +0200 |
| commit | 52b7cd665eb13098ea8ccd45ccac2bb5b85f423d (patch) | |
| tree | e2f71a0fd1dbba5edbac13b5b3d58d6c87e6b402 | |
| parent | 80ee1b6fca62dcf9ed7c54fba5cc45b790c11524 (diff) | |
| download | sparse-dev-52b7cd665eb13098ea8ccd45ccac2bb5b85f423d.tar.gz | |
reorg code for shift-shift simplification
No functional changes, just moving the code around
in preparation for shift-shift simplification.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
| -rw-r--r-- | simplify.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -627,14 +627,19 @@ static int simplify_shift(struct instruction *insn, pseudo_t pseudo, long long v break; case OP_LSR: size = operand_size(insn, pseudo); - /* fall through */ + if (value >= size) + goto zero; + switch(DEF_OPCODE(def, pseudo)) { + case OP_LSR: + goto case_shift_shift; + } + break; case OP_SHL: if (value >= size) goto zero; - if (pseudo->type != PSEUDO_REG) - break; - def = pseudo->def; - if (def->opcode == insn->opcode) { + switch(DEF_OPCODE(def, pseudo)) { + case OP_SHL: + case_shift_shift: // also for LSR - LSR if (def == insn) // cyclic DAG! break; src2 = def->src2; |
