@@ -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 = 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.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
@@ -2140,8 +2142,8 @@ bool simplify_exprt::simplify_byte_update(byte_update_exprt &expr)
2140
2142
plus_exprt new_offset (offset, compo_offset);
2141
2143
simplify_node (new_offset);
2142
2144
exprt new_value (with.new_value ());
2143
- expr.offset (). swap (new_offset);
2144
- expr.value (). swap (new_value);
2145
+ expr.set_offset ( std::move (new_offset) );
2146
+ expr.set_value ( std::move (new_value) );
2145
2147
simplify_byte_update (expr); // do this recursively
2146
2148
return false ;
2147
2149
}
@@ -2167,8 +2169,8 @@ bool simplify_exprt::simplify_byte_update(byte_update_exprt &expr)
2167
2169
plus_exprt new_offset (offset, index_offset);
2168
2170
simplify_node (new_offset);
2169
2171
exprt new_value (with.new_value ());
2170
- expr.offset (). swap (new_offset);
2171
- expr.value (). swap (new_value);
2172
+ expr.set_offset ( std::move (new_offset) );
2173
+ expr.set_value ( std::move (new_value) );
2172
2174
simplify_byte_update (expr); // do this recursively
2173
2175
return false ;
2174
2176
}
@@ -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