@@ -1238,6 +1238,7 @@ static int simplify_cast(struct instruction *insn)
struct instruction *def;
pseudo_t src;
pseudo_t val;
+ int rc = 0;
int osize;
int size;
@@ -1318,6 +1319,15 @@ static int simplify_cast(struct instruction *insn)
return replace_pseudo(insn, &insn->src1, def->src1);
}
break;
+ case OP_OR:
+ switch (insn->opcode) {
+ case OP_TRUNC:
+ mask = bits_mask(insn->size);
+ rc |= simplify_and_or_mask(def->src1, mask);
+ rc |= simplify_and_or_mask(def->src2, mask);
+ return rc;
+ }
+ break;
case OP_TRUNC:
osize = def->orig_type->bit_size;
if (insn->opcode == OP_ZEXT && size == osize) {