@@ -1902,7 +1902,7 @@ bool simplify_exprt::simplify_byte_extract(byte_extract_exprt &expr)
1902
1902
expr.op ().id () == ID_byte_update_big_endian) ||
1903
1903
(expr.id () == ID_byte_extract_little_endian &&
1904
1904
expr.op ().id () == ID_byte_update_little_endian)) &&
1905
- expr.offset () == to_byte_update_expr (expr.op ()).offset ())
1905
+ expr.offset () == to_byte_update_expr (as_const ( expr) .op ()).offset ())
1906
1906
{
1907
1907
const auto &op_byte_update = to_byte_update_expr (expr.op ());
1908
1908
@@ -2057,20 +2057,22 @@ bool simplify_exprt::simplify_byte_extract(byte_extract_exprt &expr)
2057
2057
2058
2058
bool simplify_exprt::simplify_byte_update (byte_update_exprt &expr)
2059
2059
{
2060
+ const byte_update_exprt &expr_const = as_const (expr);
2060
2061
// byte_update(byte_update(root, offset, value), offset, value2) =>
2061
2062
// byte_update(root, offset, value2)
2062
2063
if (
2063
- expr.id () == expr.op ().id () &&
2064
- expr.offset () == to_byte_update_expr (expr.op ()).offset () &&
2065
- expr.value ().type () == to_byte_update_expr (expr.op ()).value ().type ())
2064
+ expr_const.id () == expr_const.op ().id () &&
2065
+ expr_const.offset () == to_byte_update_expr (expr_const.op ()).offset () &&
2066
+ expr_const.value ().type () ==
2067
+ to_byte_update_expr (expr_const.op ()).value ().type ())
2066
2068
{
2067
- expr.set_op ()=expr .op ().op0 ();
2069
+ expr.set_op () = expr_const .op ().op0 ();
2068
2070
return false ;
2069
2071
}
2070
2072
2071
- const exprt &root=expr .op ();
2072
- const exprt &offset=expr .offset ();
2073
- const exprt &value=expr .value ();
2073
+ const exprt &root = expr_const .op ();
2074
+ const exprt &offset = expr_const .offset ();
2075
+ const exprt &value = expr_const .value ();
2074
2076
const auto val_size = pointer_offset_bits (value.type (), ns);
2075
2077
const auto root_size = pointer_offset_bits (root.type (), ns);
2076
2078
@@ -2235,7 +2237,7 @@ bool simplify_exprt::simplify_byte_update(byte_update_exprt &expr)
2235
2237
}
2236
2238
2237
2239
if (result_expr.is_nil ())
2238
- result_expr= expr.op ();
2240
+ result_expr = as_const ( expr) .op ();
2239
2241
2240
2242
exprt member_name (ID_member_name);
2241
2243
member_name.set (ID_component_name, component.get_name ());
0 commit comments