diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-07 13:53:47 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-01 00:40:57 +0100 |
commit | c4d63655e576dd59a88bc92f874a1a80f3c4cfa7 (patch) | |
tree | ae9196904982480d179ed660bd7d0b392a1b7930 | |
parent | 940c785444065041698b7e2d320f52b06ac36f75 (diff) | |
download | sparse-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.c | 2 | ||||
-rw-r--r-- | simplify.c | 3 |
2 files changed, 2 insertions, 3 deletions
@@ -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; @@ -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)) |