@@ -2000,11 +2000,10 @@ simplify_exprt::simplify_byte_extract(const byte_extract_exprt &expr)
2000
2000
{
2001
2001
auto tmp = expr;
2002
2002
2003
- tmp.offset () =
2004
- plus_exprt (to_byte_extract_expr (expr.op ()).offset (), expr.offset ());
2005
- simplify_plus (tmp.offset ());
2006
-
2003
+ tmp.offset () = simplify_plus (
2004
+ plus_exprt (to_byte_extract_expr (expr.op ()).offset (), expr.offset ()));
2007
2005
tmp.op () = to_byte_extract_expr (expr.op ()).op ();
2006
+
2008
2007
return changed (simplify_byte_extract (tmp)); // recursive call
2009
2008
}
2010
2009
@@ -2595,25 +2594,81 @@ bool simplify_exprt::simplify_node(exprt &expr)
2595
2594
}
2596
2595
}
2597
2596
else if (expr.id ()==ID_div)
2598
- no_change = simplify_div (expr) && no_change;
2597
+ {
2598
+ auto r = simplify_div (to_div_expr (expr));
2599
+ if (r.has_changed ())
2600
+ {
2601
+ no_change = false ;
2602
+ expr = r.expr ;
2603
+ }
2604
+ }
2599
2605
else if (expr.id ()==ID_mod)
2600
- no_change = simplify_mod (expr) && no_change;
2606
+ {
2607
+ auto r = simplify_mod (to_mod_expr (expr));
2608
+ if (r.has_changed ())
2609
+ {
2610
+ no_change = false ;
2611
+ expr = r.expr ;
2612
+ }
2613
+ }
2601
2614
else if (expr.id ()==ID_bitnot)
2602
2615
no_change = simplify_bitnot (expr) && no_change;
2603
2616
else if (expr.id ()==ID_bitand ||
2604
2617
expr.id ()==ID_bitor ||
2605
2618
expr.id ()==ID_bitxor)
2606
- no_change = simplify_bitwise (expr) && no_change;
2619
+ {
2620
+ auto r = simplify_bitwise (expr);
2621
+ if (r.has_changed ())
2622
+ {
2623
+ no_change = false ;
2624
+ expr = r.expr ;
2625
+ }
2626
+ }
2607
2627
else if (expr.id ()==ID_ashr || expr.id ()==ID_lshr || expr.id ()==ID_shl)
2608
- no_change = simplify_shifts (expr) && no_change;
2628
+ {
2629
+ auto r = simplify_shifts (expr);
2630
+ if (r.has_changed ())
2631
+ {
2632
+ no_change = false ;
2633
+ expr = r.expr ;
2634
+ }
2635
+ }
2609
2636
else if (expr.id ()==ID_power)
2610
- no_change = simplify_power (expr) && no_change;
2637
+ {
2638
+ auto r = simplify_power (expr);
2639
+ if (r.has_changed ())
2640
+ {
2641
+ no_change = false ;
2642
+ expr = r.expr ;
2643
+ }
2644
+ }
2611
2645
else if (expr.id ()==ID_plus)
2612
- no_change = simplify_plus (expr) && no_change;
2646
+ {
2647
+ auto r = simplify_plus (to_plus_expr (expr));
2648
+ if (r.has_changed ())
2649
+ {
2650
+ no_change = false ;
2651
+ expr = r.expr ;
2652
+ }
2653
+ }
2613
2654
else if (expr.id ()==ID_minus)
2614
- no_change = simplify_minus (expr) && no_change;
2655
+ {
2656
+ auto r = simplify_minus (to_minus_expr (expr));
2657
+ if (r.has_changed ())
2658
+ {
2659
+ no_change = false ;
2660
+ expr = r.expr ;
2661
+ }
2662
+ }
2615
2663
else if (expr.id ()==ID_mult)
2616
- no_change = simplify_mult (expr) && no_change;
2664
+ {
2665
+ auto r = simplify_mult (to_mult_expr (expr));
2666
+ if (r.has_changed ())
2667
+ {
2668
+ no_change = false ;
2669
+ expr = r.expr ;
2670
+ }
2671
+ }
2617
2672
else if (expr.id ()==ID_floatbv_plus ||
2618
2673
expr.id ()==ID_floatbv_minus ||
2619
2674
expr.id ()==ID_floatbv_mult ||
0 commit comments