diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-12-12 18:19:03 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:06:05 -0700 |
commit | 0aa8746ec975ca719f680fcb8e469236a2c0dc8e (patch) | |
tree | f7d9366431753f0cc9d445bb4d32b6834fef42d0 /simplify.c | |
parent | If we decide to mark a register as being its own storage, (diff) | |
download | sparse-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.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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; } |