Skip to content

Commit bd536b8

Browse files
committed
isinf, isnan, isnormal require floatbv operands
Fail early if simplification encounters non-floatbv operands to these functions. This would have been caught by ieee_floatt::from_expr, but failing early makes diagnosing easier.
1 parent adca517 commit bd536b8

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/util/simplify_expr_floatbv.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Author: Daniel Kroening, [email protected]
2020
simplify_exprt::resultt<>
2121
simplify_exprt::simplify_isinf(const unary_exprt &expr)
2222
{
23+
PRECONDITION(expr.op().type().id() == ID_floatbv);
24+
2325
if(expr.op().is_constant())
2426
{
2527
ieee_floatt value(to_constant_expr(expr.op()));
@@ -32,6 +34,8 @@ simplify_exprt::simplify_isinf(const unary_exprt &expr)
3234
simplify_exprt::resultt<>
3335
simplify_exprt::simplify_isnan(const unary_exprt &expr)
3436
{
37+
PRECONDITION(expr.op().type().id() == ID_floatbv);
38+
3539
if(expr.op().is_constant())
3640
{
3741
ieee_floatt value(to_constant_expr(expr.op()));
@@ -44,6 +48,8 @@ simplify_exprt::simplify_isnan(const unary_exprt &expr)
4448
simplify_exprt::resultt<>
4549
simplify_exprt::simplify_isnormal(const unary_exprt &expr)
4650
{
51+
PRECONDITION(expr.op().type().id() == ID_floatbv);
52+
4753
if(expr.op().is_constant())
4854
{
4955
ieee_floatt value(to_constant_expr(expr.op()));

0 commit comments

Comments
 (0)