@@ -2017,14 +2017,17 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
2017
2017
const auto val_size = pointer_offset_bits (value.type (), ns);
2018
2018
const auto root_size = pointer_offset_bits (root.type (), ns);
2019
2019
2020
+ const auto matching_byte_extract_id =
2021
+ expr.id () == ID_byte_update_little_endian ? ID_byte_extract_little_endian
2022
+ : ID_byte_extract_big_endian;
2023
+
2020
2024
// byte update of full object is byte_extract(new value)
2021
2025
if (
2022
2026
offset.is_zero () && val_size.has_value () && *val_size > 0 &&
2023
2027
root_size.has_value () && *root_size > 0 && *val_size >= *root_size)
2024
2028
{
2025
2029
byte_extract_exprt be (
2026
- expr.id () == ID_byte_update_little_endian ? ID_byte_extract_little_endian
2027
- : ID_byte_extract_big_endian,
2030
+ matching_byte_extract_id,
2028
2031
value,
2029
2032
offset,
2030
2033
expr.get_bits_per_byte (),
@@ -2075,14 +2078,11 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
2075
2078
* value)
2076
2079
*/
2077
2080
2078
- if (expr.id ()!=ID_byte_update_little_endian)
2079
- return unchanged (expr);
2080
-
2081
2081
if (value.id ()==ID_with)
2082
2082
{
2083
2083
const with_exprt &with=to_with_expr (value);
2084
2084
2085
- if (with.old ().id ()==ID_byte_extract_little_endian )
2085
+ if (with.old ().id () == matching_byte_extract_id )
2086
2086
{
2087
2087
const byte_extract_exprt &extract=to_byte_extract_expr (with.old ());
2088
2088
@@ -2222,7 +2222,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
2222
2222
*update_size > 0 && m_size_bytes > *update_size))
2223
2223
{
2224
2224
byte_update_exprt v (
2225
- ID_byte_update_little_endian ,
2225
+ expr. id () ,
2226
2226
member_exprt (root, component.get_name (), component.type ()),
2227
2227
from_integer (*offset_int - *m_offset, offset.type ()),
2228
2228
value,
@@ -2241,7 +2241,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
2241
2241
else
2242
2242
{
2243
2243
byte_extract_exprt v (
2244
- ID_byte_extract_little_endian ,
2244
+ matching_byte_extract_id ,
2245
2245
value,
2246
2246
from_integer (*m_offset - *offset_int, offset.type ()),
2247
2247
expr.get_bits_per_byte (),
@@ -2287,7 +2287,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
2287
2287
bytes_req = (*val_size) / expr.get_bits_per_byte () - val_offset;
2288
2288
2289
2289
byte_extract_exprt new_val (
2290
- ID_byte_extract_little_endian ,
2290
+ matching_byte_extract_id ,
2291
2291
value,
2292
2292
from_integer (val_offset, offset.type ()),
2293
2293
expr.get_bits_per_byte (),
0 commit comments