Skip to content

Commit fdc4680

Browse files
Refactor simplify_minus
* Use to_minus_expr instead of asserting the expression id * Rename the local variables for easier readability
1 parent 4924fb8 commit fdc4680

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

src/util/simplify_expr_int.cpp

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -604,54 +604,52 @@ bool simplify_exprt::simplify_plus(exprt &expr)
604604

605605
bool simplify_exprt::simplify_minus(exprt &expr)
606606
{
607-
if(!is_number(expr.type()) &&
608-
expr.type().id()!=ID_pointer)
607+
auto const &minus_expr = to_minus_expr(expr);
608+
if(!is_number(minus_expr.type()) && minus_expr.type().id() != ID_pointer)
609609
return true;
610610

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

615613
if(operands.size()!=2)
616614
return true;
617615

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

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

629-
expr.swap(tmp);
627+
expr.swap(plus_expr);
630628
return false;
631629
}
632-
else if(expr.type().id()==ID_pointer &&
633-
operands[0].type().id()==ID_pointer &&
634-
is_number(operands[1].type()))
630+
else if(
631+
minus_expr.type().id() == ID_pointer &&
632+
operands[0].type().id() == ID_pointer && is_number(operands[1].type()))
635633
{
636634
// pointer arithmetic: rewrite "p-i" to "p+(-i)"
637-
unary_minus_exprt tmp2(operands[1]);
638-
simplify_unary_minus(tmp2);
635+
unary_minus_exprt negated_pointer_offset(operands[1]);
636+
simplify_unary_minus(negated_pointer_offset);
639637

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

643-
expr.swap(tmp);
641+
expr.swap(pointer_offset_expr);
644642
return false;
645643
}
646-
else if(is_number(expr.type()) &&
647-
operands[0].type().id()==ID_pointer &&
648-
operands[1].type().id()==ID_pointer)
644+
else if(
645+
is_number(minus_expr.type()) && operands[0].type().id() == ID_pointer &&
646+
operands[1].type().id() == ID_pointer)
649647
{
650648
// pointer arithmetic: rewrite "p-p" to "0"
651649

652650
if(operands[0]==operands[1])
653651
{
654-
exprt zero=from_integer(0, expr.type());
652+
exprt zero = from_integer(0, minus_expr.type());
655653
CHECK_RETURN(zero.is_not_nil());
656654
expr=zero;
657655
return false;

0 commit comments

Comments
 (0)