@@ -228,8 +228,7 @@ void goto_checkt::div_by_zero_check(
228228 if (zero.is_nil ())
229229 throw " no zero of argument type of operator " +expr.id_string ();
230230
231- exprt inequality (ID_notequal, bool_typet ());
232- inequality.copy_to_operands (expr.op1 (), zero);
231+ const notequal_exprt inequality (expr.op1 (), zero);
233232
234233 add_guarded_claim (
235234 inequality,
@@ -329,8 +328,7 @@ void goto_checkt::mod_by_zero_check(
329328 if (zero.is_nil ())
330329 throw " no zero of argument type of operator " +expr.id_string ();
331330
332- exprt inequality (ID_notequal, bool_typet ());
333- inequality.copy_to_operands (expr.op1 (), zero);
331+ const notequal_exprt inequality (expr.op1 (), zero);
334332
335333 add_guarded_claim (
336334 inequality,
@@ -374,13 +372,13 @@ void goto_checkt::conversion_check(
374372 if (new_width>=old_width)
375373 return ; // always ok
376374
377- binary_relation_exprt no_overflow_upper (ID_le);
378- no_overflow_upper.lhs ()=expr.op0 ();
379- no_overflow_upper.rhs ()=from_integer (power (2 , new_width-1 )-1 , old_type);
375+ const binary_relation_exprt no_overflow_upper (
376+ expr.op0 (),
377+ ID_le,
378+ from_integer (power (2 , new_width - 1 ) - 1 , old_type));
380379
381- binary_relation_exprt no_overflow_lower (ID_ge);
382- no_overflow_lower.lhs ()=expr.op0 ();
383- no_overflow_lower.rhs ()=from_integer (-power (2 , new_width-1 ), old_type);
380+ const binary_relation_exprt no_overflow_lower (
381+ expr.op0 (), ID_ge, from_integer (-power (2 , new_width - 1 ), old_type));
384382
385383 add_guarded_claim (
386384 and_exprt (no_overflow_lower, no_overflow_upper),
@@ -396,9 +394,10 @@ void goto_checkt::conversion_check(
396394 if (new_width>=old_width+1 )
397395 return ; // always ok
398396
399- binary_relation_exprt no_overflow_upper (ID_le);
400- no_overflow_upper.lhs ()=expr.op0 ();
401- no_overflow_upper.rhs ()=from_integer (power (2 , new_width-1 )-1 , old_type);
397+ const binary_relation_exprt no_overflow_upper (
398+ expr.op0 (),
399+ ID_le,
400+ from_integer (power (2 , new_width - 1 ) - 1 , old_type));
402401
403402 add_guarded_claim (
404403 no_overflow_upper,
@@ -413,15 +412,13 @@ void goto_checkt::conversion_check(
413412 // Note that the fractional part is truncated!
414413 ieee_floatt upper (to_floatbv_type (old_type));
415414 upper.from_integer (power (2 , new_width-1 ));
416- binary_relation_exprt no_overflow_upper (ID_lt);
417- no_overflow_upper.lhs ()=expr.op0 ();
418- no_overflow_upper.rhs ()=upper.to_expr ();
415+ const binary_relation_exprt no_overflow_upper (
416+ expr.op0 (), ID_lt, upper.to_expr ());
419417
420418 ieee_floatt lower (to_floatbv_type (old_type));
421419 lower.from_integer (-power (2 , new_width-1 )-1 );
422- binary_relation_exprt no_overflow_lower (ID_gt);
423- no_overflow_lower.lhs ()=expr.op0 ();
424- no_overflow_lower.rhs ()=lower.to_expr ();
420+ const binary_relation_exprt no_overflow_lower (
421+ expr.op0 (), ID_gt, lower.to_expr ());
425422
426423 add_guarded_claim (
427424 and_exprt (no_overflow_lower, no_overflow_upper),
@@ -443,9 +440,8 @@ void goto_checkt::conversion_check(
443440 if (new_width>=old_width-1 )
444441 {
445442 // only need lower bound check
446- binary_relation_exprt no_overflow_lower (ID_ge);
447- no_overflow_lower.lhs ()=expr.op0 ();
448- no_overflow_lower.rhs ()=from_integer (0 , old_type);
443+ const binary_relation_exprt no_overflow_lower (
444+ expr.op0 (), ID_ge, from_integer (0 , old_type));
449445
450446 add_guarded_claim (
451447 no_overflow_lower,
@@ -458,13 +454,11 @@ void goto_checkt::conversion_check(
458454 else
459455 {
460456 // need both
461- binary_relation_exprt no_overflow_upper (ID_le);
462- no_overflow_upper.lhs ()=expr.op0 ();
463- no_overflow_upper.rhs ()=from_integer (power (2 , new_width)-1 , old_type);
457+ const binary_relation_exprt no_overflow_upper (
458+ expr.op0 (), ID_le, from_integer (power (2 , new_width) - 1 , old_type));
464459
465- binary_relation_exprt no_overflow_lower (ID_ge);
466- no_overflow_lower.lhs ()=expr.op0 ();
467- no_overflow_lower.rhs ()=from_integer (0 , old_type);
460+ const binary_relation_exprt no_overflow_lower (
461+ expr.op0 (), ID_ge, from_integer (0 , old_type));
468462
469463 add_guarded_claim (
470464 and_exprt (no_overflow_lower, no_overflow_upper),
@@ -481,9 +475,8 @@ void goto_checkt::conversion_check(
481475 if (new_width>=old_width)
482476 return ; // always ok
483477
484- binary_relation_exprt no_overflow_upper (ID_le);
485- no_overflow_upper.lhs ()=expr.op0 ();
486- no_overflow_upper.rhs ()=from_integer (power (2 , new_width)-1 , old_type);
478+ const binary_relation_exprt no_overflow_upper (
479+ expr.op0 (), ID_le, from_integer (power (2 , new_width) - 1 , old_type));
487480
488481 add_guarded_claim (
489482 no_overflow_upper,
@@ -498,15 +491,13 @@ void goto_checkt::conversion_check(
498491 // Note that the fractional part is truncated!
499492 ieee_floatt upper (to_floatbv_type (old_type));
500493 upper.from_integer (power (2 , new_width)-1 );
501- binary_relation_exprt no_overflow_upper (ID_lt);
502- no_overflow_upper.lhs ()=expr.op0 ();
503- no_overflow_upper.rhs ()=upper.to_expr ();
494+ const binary_relation_exprt no_overflow_upper (
495+ expr.op0 (), ID_lt, upper.to_expr ());
504496
505497 ieee_floatt lower (to_floatbv_type (old_type));
506498 lower.from_integer (-1 );
507- binary_relation_exprt no_overflow_lower (ID_gt);
508- no_overflow_lower.lhs ()=expr.op0 ();
509- no_overflow_lower.rhs ()=lower.to_expr ();
499+ const binary_relation_exprt no_overflow_lower (
500+ expr.op0 (), ID_gt, lower.to_expr ());
510501
511502 add_guarded_claim (
512503 and_exprt (no_overflow_lower, no_overflow_upper),
@@ -665,8 +656,8 @@ void goto_checkt::float_overflow_check(
665656 if (ns.follow (expr.op0 ().type ()).id ()==ID_floatbv)
666657 {
667658 // float-to-float
668- unary_exprt op0_inf (ID_isinf, expr.op0 (), bool_typet ());
669- unary_exprt new_inf (ID_isinf, expr, bool_typet () );
659+ const isinf_exprt op0_inf (expr.op0 ());
660+ const isinf_exprt new_inf (expr);
670661
671662 or_exprt overflow_check (op0_inf, not_exprt (new_inf));
672663
@@ -681,7 +672,7 @@ void goto_checkt::float_overflow_check(
681672 else
682673 {
683674 // non-float-to-float
684- unary_exprt new_inf (ID_isinf, expr, bool_typet () );
675+ const isinf_exprt new_inf (expr);
685676
686677 add_guarded_claim (
687678 not_exprt (new_inf),
@@ -699,8 +690,8 @@ void goto_checkt::float_overflow_check(
699690 assert (expr.operands ().size ()==2 );
700691
701692 // Can overflow if dividing by something small
702- unary_exprt new_inf (ID_isinf, expr, bool_typet () );
703- unary_exprt op0_inf (ID_isinf, expr.op0 (), bool_typet ());
693+ const isinf_exprt new_inf (expr);
694+ const isinf_exprt op0_inf (expr.op0 ());
704695
705696 or_exprt overflow_check (op0_inf, not_exprt (new_inf));
706697
@@ -730,9 +721,9 @@ void goto_checkt::float_overflow_check(
730721 if (expr.operands ().size ()==2 )
731722 {
732723 // Can overflow
733- unary_exprt new_inf (ID_isinf, expr, bool_typet () );
734- unary_exprt op0_inf (ID_isinf, expr.op0 (), bool_typet ());
735- unary_exprt op1_inf (ID_isinf, expr.op1 (), bool_typet ());
724+ const isinf_exprt new_inf (expr);
725+ const isinf_exprt op0_inf (expr.op0 ());
726+ const isinf_exprt op1_inf (expr.op1 ());
736727
737728 or_exprt overflow_check (op0_inf, op1_inf, not_exprt (new_inf));
738729
@@ -791,11 +782,11 @@ void goto_checkt::nan_check(
791782 // there a two ways to get a new NaN on division:
792783 // 0/0 = NaN and x/inf = NaN
793784 // (note that x/0 = +-inf for x!=0 and x!=inf)
794- exprt zero_div_zero= and_exprt (
785+ const and_exprt zero_div_zero (
795786 ieee_float_equal_exprt (expr.op0 (), from_integer (0 , expr.op0 ().type ())),
796787 ieee_float_equal_exprt (expr.op1 (), from_integer (0 , expr.op1 ().type ())));
797788
798- exprt div_inf= unary_exprt (ID_isinf, expr.op1 (), bool_typet ());
789+ const isinf_exprt div_inf ( expr.op1 ());
799790
800791 isnan=or_exprt (zero_div_zero, div_inf);
801792 }
@@ -807,13 +798,13 @@ void goto_checkt::nan_check(
807798 assert (expr.operands ().size ()==2 );
808799
809800 // Inf * 0 is NaN
810- exprt inf_times_zero= and_exprt (
811- unary_exprt (ID_isinf, expr.op0 (), bool_typet ()),
801+ const and_exprt inf_times_zero (
802+ isinf_exprt ( expr.op0 ()),
812803 ieee_float_equal_exprt (expr.op1 (), from_integer (0 , expr.op1 ().type ())));
813804
814- exprt zero_times_inf= and_exprt (
805+ const and_exprt zero_times_inf (
815806 ieee_float_equal_exprt (expr.op1 (), from_integer (0 , expr.op1 ().type ())),
816- unary_exprt (ID_isinf, expr.op0 (), bool_typet ()));
807+ isinf_exprt ( expr.op0 ()));
817808
818809 isnan=or_exprt (inf_times_zero, zero_times_inf);
819810 }
@@ -1055,13 +1046,9 @@ void goto_checkt::pointer_validity_check(
10551046
10561047 if (flags.is_unknown () || flags.is_dynamic_heap ())
10571048 {
1058- exprt dynamic_bounds=
1059- or_exprt (dynamic_object_lower_bound (pointer, ns, access_lb),
1060- dynamic_object_upper_bound (
1061- pointer,
1062- dereference_type,
1063- ns,
1064- access_ub));
1049+ const or_exprt dynamic_bounds (
1050+ dynamic_object_lower_bound (pointer, ns, access_lb),
1051+ dynamic_object_upper_bound (pointer, dereference_type, ns, access_ub));
10651052
10661053 add_guarded_claim (
10671054 or_exprt (
@@ -1080,13 +1067,9 @@ void goto_checkt::pointer_validity_check(
10801067 flags.is_dynamic_local () ||
10811068 flags.is_static_lifetime ())
10821069 {
1083- exprt object_bounds=
1084- or_exprt (object_lower_bound (pointer, ns, access_lb),
1085- object_upper_bound (
1086- pointer,
1087- dereference_type,
1088- ns,
1089- access_ub));
1070+ const or_exprt object_bounds (
1071+ object_lower_bound (pointer, ns, access_lb),
1072+ object_upper_bound (pointer, dereference_type, ns, access_ub));
10901073
10911074 add_guarded_claim (
10921075 or_exprt (allocs, dynamic_object (pointer), not_exprt (object_bounds)),
@@ -1672,12 +1655,11 @@ void goto_checkt::goto_check(
16721655 exprt lhs=ns.lookup (CPROVER_PREFIX " dead_object" ).symbol_expr ();
16731656 if (!base_type_eq (lhs.type (), address_of_expr.type (), ns))
16741657 address_of_expr.make_typecast (lhs.type ());
1675- exprt rhs=
1676- if_exprt (
1677- side_effect_expr_nondett (bool_typet ()),
1678- address_of_expr,
1679- lhs,
1680- lhs.type ());
1658+ const if_exprt rhs (
1659+ side_effect_expr_nondett (bool_typet ()),
1660+ address_of_expr,
1661+ lhs,
1662+ lhs.type ());
16811663 t->source_location =i.source_location ;
16821664 t->code =code_assignt (lhs, rhs);
16831665 t->code .add_source_location ()=i.source_location ;
0 commit comments