Skip to content

Commit b1e748a

Browse files
author
Daniel Kroening
authored
Merge pull request #4990 from diffblue/boolean_negate
use simplify_not instead of boolean_negate
2 parents dc5cbf9 + c9b7fd2 commit b1e748a

File tree

3 files changed

+16
-23
lines changed

3 files changed

+16
-23
lines changed

src/util/simplify_expr_boolean.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ simplify_exprt::resultt<> simplify_exprt::simplify_boolean(const exprt &expr)
4040

4141
binary_exprt new_expr = implies_expr;
4242
new_expr.id(ID_or);
43-
new_expr.op0() = boolean_negate(new_expr.op0());
43+
new_expr.op0() = simplify_not(not_exprt(new_expr.op0()));
4444
return changed(simplify_node(new_expr));
4545
}
4646
else if(expr.id()==ID_xor)
@@ -82,7 +82,7 @@ simplify_exprt::resultt<> simplify_exprt::simplify_boolean(const exprt &expr)
8282
else if(new_operands.size() == 1)
8383
{
8484
if(negate)
85-
return boolean_negate(new_operands.front());
85+
return changed(simplify_not(not_exprt(new_operands.front())));
8686
else
8787
return std::move(new_operands.front());
8888
}
@@ -191,7 +191,7 @@ simplify_exprt::resultt<> simplify_exprt::simplify_not(const not_exprt &expr)
191191

192192
Forall_operands(it, tmp)
193193
{
194-
*it = simplify_node(boolean_negate(*it));
194+
*it = simplify_not(not_exprt(*it));
195195
}
196196

197197
tmp.id(tmp.id() == ID_and ? ID_or : ID_and);

src/util/simplify_expr_if.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ simplify_exprt::resultt<> simplify_exprt::simplify_if(const if_exprt &expr)
350350
else if(truevalue.is_false() && falsevalue.is_true())
351351
{
352352
// a?0:1 <-> !a
353-
return changed(simplify_node(boolean_negate(cond)));
353+
return changed(simplify_not(not_exprt(cond)));
354354
}
355355
else if(falsevalue.is_false())
356356
{
@@ -360,8 +360,8 @@ simplify_exprt::resultt<> simplify_exprt::simplify_if(const if_exprt &expr)
360360
else if(falsevalue.is_true())
361361
{
362362
// a?b:1 <-> !a OR b
363-
return changed(simplify_node(
364-
or_exprt(simplify_node(boolean_negate(cond)), truevalue)));
363+
return changed(
364+
simplify_node(or_exprt(simplify_not(not_exprt(cond)), truevalue)));
365365
}
366366
else if(truevalue.is_true())
367367
{
@@ -371,8 +371,8 @@ simplify_exprt::resultt<> simplify_exprt::simplify_if(const if_exprt &expr)
371371
else if(truevalue.is_false())
372372
{
373373
// a?0:b <-> !a && b
374-
return changed(simplify_node(
375-
and_exprt(simplify_node(boolean_negate(cond)), falsevalue)));
374+
return changed(
375+
simplify_node(and_exprt(simplify_not(not_exprt(cond)), falsevalue)));
376376
}
377377
}
378378
}

src/util/simplify_expr_int.cpp

+8-15
Original file line numberDiff line numberDiff line change
@@ -1481,8 +1481,7 @@ simplify_exprt::simplify_inequality_no_constant(const exprt &expr)
14811481
auto new_expr = expr;
14821482
new_expr.id(ID_equal);
14831483
new_expr = simplify_inequality_no_constant(new_expr);
1484-
new_expr = boolean_negate(new_expr);
1485-
return changed(simplify_node(new_expr));
1484+
return changed(simplify_not(not_exprt(new_expr)));
14861485
}
14871486
else if(expr.id()==ID_gt)
14881487
{
@@ -1491,16 +1490,14 @@ simplify_exprt::simplify_inequality_no_constant(const exprt &expr)
14911490
// swap operands
14921491
new_expr.op0().swap(new_expr.op1());
14931492
new_expr = simplify_inequality_no_constant(new_expr);
1494-
new_expr = boolean_negate(new_expr);
1495-
return changed(simplify_node(new_expr));
1493+
return changed(simplify_not(not_exprt(new_expr)));
14961494
}
14971495
else if(expr.id()==ID_lt)
14981496
{
14991497
auto new_expr = expr;
15001498
new_expr.id(ID_ge);
15011499
new_expr = simplify_inequality_no_constant(new_expr);
1502-
new_expr = boolean_negate(new_expr);
1503-
return changed(simplify_node(new_expr));
1500+
return changed(simplify_not(not_exprt(new_expr)));
15041501
}
15051502
else if(expr.id()==ID_le)
15061503
{
@@ -1616,8 +1613,7 @@ simplify_exprt::simplify_inequality_rhs_is_constant(const exprt &expr)
16161613
auto new_expr = expr;
16171614
new_expr.id(ID_equal);
16181615
new_expr = simplify_inequality_rhs_is_constant(new_expr);
1619-
new_expr = boolean_negate(new_expr);
1620-
return changed(simplify_node(new_expr));
1616+
return changed(simplify_not(not_exprt(new_expr)));
16211617
}
16221618

16231619
// very special case for pointers
@@ -1806,7 +1802,7 @@ simplify_exprt::simplify_inequality_rhs_is_constant(const exprt &expr)
18061802
// we re-write (TYPE)boolean == 0 -> !boolean
18071803
if(expr.op1().is_zero() && expr.id()==ID_equal)
18081804
{
1809-
return boolean_negate(expr.op0().op0());
1805+
return changed(simplify_not(not_exprt(expr.op0().op0())));
18101806
}
18111807

18121808
// we re-write (TYPE)boolean != 0 -> boolean
@@ -1829,8 +1825,7 @@ simplify_exprt::simplify_inequality_rhs_is_constant(const exprt &expr)
18291825
auto new_expr = expr;
18301826
new_expr.id(ID_equal);
18311827
new_expr = simplify_inequality_rhs_is_constant(new_expr);
1832-
new_expr = boolean_negate(new_expr);
1833-
return changed(simplify_node(new_expr));
1828+
return changed(simplify_not(not_exprt(new_expr)));
18341829
}
18351830
else if(expr.id()==ID_gt)
18361831
{
@@ -1852,8 +1847,7 @@ simplify_exprt::simplify_inequality_rhs_is_constant(const exprt &expr)
18521847
auto new_expr = expr;
18531848
new_expr.id(ID_ge);
18541849
new_expr = simplify_inequality_rhs_is_constant(new_expr);
1855-
new_expr = boolean_negate(new_expr);
1856-
return changed(simplify_node(new_expr));
1850+
return changed(simplify_not(not_exprt(new_expr)));
18571851
}
18581852
else if(expr.id()==ID_le)
18591853
{
@@ -1869,8 +1863,7 @@ simplify_exprt::simplify_inequality_rhs_is_constant(const exprt &expr)
18691863
++i;
18701864
new_expr.op1() = from_integer(i, new_expr.op1().type());
18711865
new_expr = simplify_inequality_rhs_is_constant(new_expr);
1872-
new_expr = boolean_negate(new_expr);
1873-
return changed(simplify_node(new_expr));
1866+
return changed(simplify_not(not_exprt(new_expr)));
18741867
}
18751868
}
18761869
#endif

0 commit comments

Comments
 (0)