aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-12-12 18:19:03 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:06:05 -0700
commit0aa8746ec975ca719f680fcb8e469236a2c0dc8e (patch)
treef7d9366431753f0cc9d445bb4d32b6834fef42d0 /simplify.c
parentIf we decide to mark a register as being its own storage, (diff)
downloadsparse-0aa8746ec975ca719f680fcb8e469236a2c0dc8e.tar.gz
sparse-0aa8746ec975ca719f680fcb8e469236a2c0dc8e.tar.bz2
sparse-0aa8746ec975ca719f680fcb8e469236a2c0dc8e.zip
Simplify conditional on cast-to-larger-size to conditional on original.
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 e294efb..b2bb8d7 100644
--- a/simplify.c
+++ b/simplify.c
@@ -663,6 +663,14 @@ static int simplify_branch(struct instruction *insn)
return REPEAT_CSE;
}
}
+ if (def->opcode == OP_CAST) {
+ int orig_size = def->orig_type ? def->orig_type->bit_size : 0;
+ if (def->size > orig_size) {
+ use_pseudo(def->src, &insn->cond);
+ remove_usage(cond, &insn->cond);
+ return REPEAT_CSE;
+ }
+ }
}
return 0;
}