aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-11-07 13:53:47 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-11-01 00:40:57 +0100
commitc4d63655e576dd59a88bc92f874a1a80f3c4cfa7 (patch)
treeae9196904982480d179ed660bd7d0b392a1b7930
parent940c785444065041698b7e2d320f52b06ac36f75 (diff)
downloadsparse-c4d63655e576dd59a88bc92f874a1a80f3c4cfa7.tar.gz
do not call simplify_instruction() if already removed
simplify_instruction() is called on every instructions, even those already removed. It's useless (and annoying when debugging). So, filter out removed instructions before calling simplify_instruction(). Fixes: c5ba883e6ac47381f8112ed33f22a931a79ac517 Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--optimize.c2
-rw-r--r--simplify.c3
2 files changed, 2 insertions, 3 deletions
diff --git a/optimize.c b/optimize.c
index 31d94e61..bfab74c0 100644
--- a/optimize.c
+++ b/optimize.c
@@ -34,6 +34,8 @@ static void clean_up_insns(struct entrypoint *ep)
FOR_EACH_PTR(ep->bbs, bb) {
struct instruction *insn;
FOR_EACH_PTR(bb->insns, insn) {
+ if (!insn->bb)
+ continue;
repeat_phase |= simplify_instruction(insn);
if (!insn->bb)
continue;
diff --git a/simplify.c b/simplify.c
index f2aaa52d..ba63f28a 100644
--- a/simplify.c
+++ b/simplify.c
@@ -1916,9 +1916,6 @@ int simplify_instruction(struct instruction *insn)
unsigned flags;
int changed = 0;
- if (!insn->bb)
- return 0;
-
flags = opcode_table[insn->opcode].flags;
if (flags & OPF_TARGET) {
if (!has_users(insn->target))