Only pseudos of type PSEUDO_REG have a defining instruction. However, in commit 5425db10d4d3 ("simplify '~(~x)' and '-(-x)' to 'x'"), this defining instruction of the 'src' of the outer unop was accessed without checking the type. Fixes: 5425db10d4d35895ba3ca390478c624233ec027d Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- simplify.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/simplify.c b/simplify.c index 76c0558855a2..15452a585598 100644 --- a/simplify.c +++ b/simplify.c @@ -1311,13 +1311,11 @@ static int simplify_unop(struct instruction *insn) struct instruction *def; case OP_NOT: - def = insn->src->def; - if (def && def->opcode == OP_NOT) + if (DEF_OPCODE(def, insn->src) == OP_NOT) return replace_with_pseudo(insn, def->src); break; case OP_NEG: - def = insn->src->def; - if (def && def->opcode == OP_NEG) + if (DEF_OPCODE(def, insn->src) == OP_NEG) return replace_with_pseudo(insn, def->src); break; default: -- 2.28.0