Skip to content

Commit e4cfc2f

Browse files
Refactor simplify_minus
* Use to_minus_expr instead of asserting the expression id * Rename the local variables for easier readability
1 parent 22ef1c4 commit e4cfc2f

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

src/util/simplify_expr_int.cpp

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -604,43 +604,42 @@ bool simplify_exprt::simplify_plus(exprt &expr)
604604

605605
bool simplify_exprt::simplify_minus(exprt &expr)
606606
{
607+
auto const &minus_expr = to_minus_expr(expr);
607608
if(!is_number(expr.type()) &&
608609
expr.type().id()!=ID_pointer)
609610
return true;
610611

611-
exprt::operandst &operands=expr.operands();
612-
613-
assert(expr.id()==ID_minus);
612+
const exprt::operandst &operands = minus_expr.operands();
614613

615614
if(operands.size()!=2)
616615
return true;
617616

618-
if(is_number(expr.type()) &&
619-
is_number(operands[0].type()) &&
620-
is_number(operands[1].type()))
617+
if(
618+
is_number(minus_expr.type()) && is_number(operands[0].type()) &&
619+
is_number(operands[1].type()))
621620
{
622621
// rewrite "a-b" to "a+(-b)"
623-
unary_minus_exprt tmp2(operands[1]);
624-
simplify_unary_minus(tmp2);
622+
unary_minus_exprt rhs_negated(operands[1]);
623+
simplify_unary_minus(rhs_negated);
625624

626-
plus_exprt tmp(operands[0], tmp2);
627-
simplify_node(tmp);
625+
plus_exprt plus_expr(operands[0], rhs_negated);
626+
simplify_node(plus_expr);
628627

629-
expr.swap(tmp);
628+
expr.swap(plus_expr);
630629
return false;
631630
}
632631
else if(expr.type().id()==ID_pointer &&
633632
operands[0].type().id()==ID_pointer &&
634633
is_number(operands[1].type()))
635634
{
636635
// pointer arithmetic: rewrite "p-i" to "p+(-i)"
637-
unary_minus_exprt tmp2(operands[1]);
638-
simplify_unary_minus(tmp2);
636+
unary_minus_exprt negated_pointer_offset(operands[1]);
637+
simplify_unary_minus(negated_pointer_offset);
639638

640-
plus_exprt tmp(operands[0], tmp2);
641-
simplify_plus(tmp);
639+
plus_exprt pointer_offset_expr(operands[0], negated_pointer_offset);
640+
simplify_plus(pointer_offset_expr);
642641

643-
expr.swap(tmp);
642+
expr.swap(pointer_offset_expr);
644643
return false;
645644
}
646645
else if(is_number(expr.type()) &&

0 commit comments

Comments
 (0)