Some simplifications reduce to transforming a binop into an unop. Add an helper for making this change easier and more readable. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- simplify.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/simplify.c b/simplify.c index 4c6569eba036..3cac124f7d9f 100644 --- a/simplify.c +++ b/simplify.c @@ -470,6 +470,20 @@ static inline int replace_with_value(struct instruction *insn, long long val) return replace_with_pseudo(insn, value_pseudo(val)); } +/// +// replace a binop with an unop +// @insn: the instruction to be replaced +// @op: the instruction's new opcode +// @src: the instruction's new operand +// @return: REPEAT_CSE +static inline int replace_with_unop(struct instruction *insn, int op, pseudo_t src) +{ + insn->opcode = op; + replace_pseudo(insn, &insn->src1, src); + remove_usage(insn->src2, &insn->src2); + return REPEAT_CSE; +} + static inline int def_opcode(pseudo_t p) { if (p->type != PSEUDO_REG) -- 2.28.0