Skip to content

Commit 46c5afc

Browse files
committed
Preparing typing of simplify_if, use lift_if
1 parent d029656 commit 46c5afc

File tree

4 files changed

+24
-57
lines changed

4 files changed

+24
-57
lines changed

src/util/simplify_expr.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ bool simplify_exprt::simplify_typecast(exprt &expr)
452452
simplify_typecast(tmp_op1);
453453
simplify_typecast(tmp_op2);
454454
expr=if_exprt(expr.op0().op0(), tmp_op1, tmp_op2, expr_type);
455-
simplify_if(expr);
455+
simplify_if(to_if_expr(expr));
456456
return false;
457457
}
458458
#endif
@@ -764,7 +764,7 @@ bool simplify_exprt::simplify_dereference(exprt &expr)
764764

765765
expr=if_exprt(if_expr.cond(), tmp_op1, tmp_op2);
766766

767-
simplify_if(expr);
767+
simplify_if(to_if_expr(expr));
768768

769769
return false;
770770
}
@@ -2396,7 +2396,7 @@ bool simplify_exprt::simplify_node(exprt &expr)
23962396
expr.id()==ID_ge || expr.id()==ID_le)
23972397
result=simplify_inequality(expr) && result;
23982398
else if(expr.id()==ID_if)
2399-
result=simplify_if(expr) && result;
2399+
result=simplify_if(to_if_expr(expr)) && result;
24002400
else if(expr.id()==ID_lambda)
24012401
result=simplify_lambda(expr) && result;
24022402
else if(expr.id()==ID_with)

src/util/simplify_expr_array.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,7 @@ bool simplify_exprt::simplify_index(exprt &expr)
117117
return false;
118118
}
119119

120-
exprt if_expr(ID_if, expr.type());
121-
if_expr.reserve_operands(3);
122-
if_expr.move_to_operands(equality_expr);
123-
if_expr.copy_to_operands(with_expr.op2());
124-
if_expr.move_to_operands(new_index_expr);
125-
120+
if_exprt if_expr(equality_expr, with_expr.op2(), new_index_expr);
126121
simplify_if(if_expr);
127122

128123
expr.swap(if_expr);

src/util/simplify_expr_int.cpp

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,18 +1271,11 @@ bool simplify_exprt::simplify_inequality(exprt &expr)
12711271

12721272
if(tmp0.id()==ID_if && tmp0.operands().size()==3)
12731273
{
1274-
const if_exprt &if_expr=to_if_expr(tmp0);
1275-
1276-
exprt tmp_op1=expr;
1277-
tmp_op1.op0()=if_expr.true_case();
1278-
simplify_inequality(tmp_op1);
1279-
exprt tmp_op2=expr;
1280-
tmp_op2.op0()=if_expr.false_case();
1281-
simplify_inequality(tmp_op2);
1282-
1283-
expr=if_exprt(if_expr.cond(), tmp_op1, tmp_op2);
1284-
1285-
simplify_if(expr);
1274+
if_exprt if_expr=lift_if(expr, 0);
1275+
simplify_inequality(if_expr.true_case());
1276+
simplify_inequality(if_expr.false_case());
1277+
simplify_if(if_expr);
1278+
expr.swap(if_expr);
12861279

12871280
return false;
12881281
}
@@ -1680,18 +1673,11 @@ bool simplify_exprt::simplify_inequality_constant(exprt &expr)
16801673

16811674
if(expr.op0().id()==ID_if && expr.op0().operands().size()==3)
16821675
{
1683-
const if_exprt &if_expr=to_if_expr(expr.op0());
1684-
1685-
exprt tmp_op1=expr;
1686-
tmp_op1.op0()=if_expr.true_case();
1687-
simplify_inequality_constant(tmp_op1);
1688-
exprt tmp_op2=expr;
1689-
tmp_op2.op0()=if_expr.false_case();
1690-
simplify_inequality_constant(tmp_op2);
1691-
1692-
expr=if_exprt(if_expr.cond(), tmp_op1, tmp_op2);
1693-
1694-
simplify_if(expr);
1676+
if_exprt if_expr=lift_if(expr, 0);
1677+
simplify_inequality_constant(if_expr.true_case());
1678+
simplify_inequality_constant(if_expr.false_case());
1679+
simplify_if(if_expr);
1680+
expr.swap(if_expr);
16951681

16961682
return false;
16971683
}

src/util/simplify_expr_pointer.cpp

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -258,18 +258,11 @@ bool simplify_exprt::simplify_pointer_offset(exprt &expr)
258258

259259
if(ptr.id()==ID_if && ptr.operands().size()==3)
260260
{
261-
const if_exprt &if_expr=to_if_expr(ptr);
262-
263-
exprt tmp_op1=expr;
264-
tmp_op1.op0()=if_expr.true_case();
265-
simplify_pointer_offset(tmp_op1);
266-
exprt tmp_op2=expr;
267-
tmp_op2.op0()=if_expr.false_case();
268-
simplify_pointer_offset(tmp_op2);
269-
270-
expr=if_exprt(if_expr.cond(), tmp_op1, tmp_op2);
271-
272-
simplify_if(expr);
261+
if_exprt if_expr=lift_if(expr, 0);
262+
simplify_pointer_offset(if_expr.true_case());
263+
simplify_pointer_offset(if_expr.false_case());
264+
simplify_if(if_expr);
265+
expr.swap(if_expr);
273266

274267
return false;
275268
}
@@ -583,18 +576,11 @@ bool simplify_exprt::simplify_dynamic_object(exprt &expr)
583576

584577
if(op.id()==ID_if && op.operands().size()==3)
585578
{
586-
const if_exprt &if_expr=to_if_expr(op);
587-
588-
exprt tmp_op1=expr;
589-
tmp_op1.op0()=if_expr.true_case();
590-
simplify_dynamic_object(tmp_op1);
591-
exprt tmp_op2=expr;
592-
tmp_op2.op0()=if_expr.false_case();
593-
simplify_dynamic_object(tmp_op2);
594-
595-
expr=if_exprt(if_expr.cond(), tmp_op1, tmp_op2);
596-
597-
simplify_if(expr);
579+
if_exprt if_expr=lift_if(expr, 0);
580+
simplify_dynamic_object(if_expr.true_case());
581+
simplify_dynamic_object(if_expr.false_case());
582+
simplify_if(if_expr);
583+
expr.swap(if_expr);
598584

599585
return false;
600586
}

0 commit comments

Comments
 (0)