@@ -1460,36 +1460,6 @@ static bool eliminate_common_addends(exprt &op0, exprt &op1)
1460
1460
return true ;
1461
1461
}
1462
1462
1463
- // / Collect integer-typed constants in \p values when \p expr either itself is a
1464
- // / constant or an if-expression; for an if-expression recursively collect those
1465
- // / values in the true- and false case, respectively.
1466
- // / \param expr: expression to collect constants from
1467
- // / \param [out] values: set of integer constants
1468
- // / \return false, iff all sub-expressions were either integer constants or if
1469
- // / expressions with true/false cases being constants or if expressions.
1470
- static bool collect_constants (const exprt &expr, std::set<mp_integer> &values)
1471
- {
1472
- if (expr.is_constant ())
1473
- {
1474
- const auto int_value_opt = numeric_cast<mp_integer>(to_constant_expr (expr));
1475
- if (!int_value_opt.has_value ())
1476
- return true ;
1477
-
1478
- values.insert (*int_value_opt);
1479
-
1480
- return false ;
1481
- }
1482
- else if (expr.id () == ID_if)
1483
- {
1484
- const auto &if_expr = to_if_expr (expr);
1485
-
1486
- return collect_constants (if_expr.true_case (), values) ||
1487
- collect_constants (if_expr.false_case (), values);
1488
- }
1489
-
1490
- return true ;
1491
- }
1492
-
1493
1463
simplify_exprt::resultt<> simplify_exprt::simplify_inequality_no_constant (
1494
1464
const binary_relation_exprt &expr)
1495
1465
{
@@ -1543,45 +1513,6 @@ simplify_exprt::resultt<> simplify_exprt::simplify_inequality_no_constant(
1543
1513
if (expr.op0 () == expr.op1 ())
1544
1514
return true_exprt ();
1545
1515
1546
- // try constants
1547
-
1548
- std::set<mp_integer> values0, values1;
1549
- bool ok = !collect_constants (expr.op0 (), values0);
1550
- if (ok)
1551
- ok = !collect_constants (expr.op1 (), values1);
1552
-
1553
- if (ok)
1554
- {
1555
- // We can simplify equality if both sides have exactly one constant value.
1556
- // This rule most likely never kicks in as we will already have simplified
1557
- // this case elsewhere (equalities with at least one side being constant are
1558
- // handled by other functions, and if expressions with multiple branches
1559
- // having the same value are simplified to remove the if expression).
1560
- if (expr.id () == ID_equal)
1561
- {
1562
- if (values0.size () == 1 && values1.size () == 1 )
1563
- {
1564
- return make_boolean_expr (*values0.begin () == *values1.begin ());
1565
- }
1566
- }
1567
- else
1568
- {
1569
- // ID_ge, as ensured by the above INVARIANT: the smallest value in values0
1570
- // must be >= the largest value in values1
1571
- if (*values0.begin () >= *values1.rbegin ())
1572
- {
1573
- return make_boolean_expr (true );
1574
- }
1575
- // If all entries in values0 are smaller than the smallest entry in
1576
- // values1 then the result must be false.
1577
- else if (*values0.rbegin () < *values1.begin ())
1578
- {
1579
- return make_boolean_expr (false );
1580
- }
1581
- // Else we don't know for sure.
1582
- }
1583
- }
1584
-
1585
1516
// See if we can eliminate common addends on both sides.
1586
1517
// On bit-vectors, this is only sound on '='.
1587
1518
if (expr.id ()==ID_equal)
0 commit comments