@@ -2017,14 +2017,17 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
20172017 const auto val_size = pointer_offset_bits (value.type (), ns);
20182018 const auto root_size = pointer_offset_bits (root.type (), ns);
20192019
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+
20202024 // byte update of full object is byte_extract(new value)
20212025 if (
20222026 offset.is_zero () && val_size.has_value () && *val_size > 0 &&
20232027 root_size.has_value () && *root_size > 0 && *val_size >= *root_size)
20242028 {
20252029 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,
20282031 value,
20292032 offset,
20302033 expr.get_bits_per_byte (),
@@ -2075,14 +2078,11 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
20752078 * value)
20762079 */
20772080
2078- if (expr.id ()!=ID_byte_update_little_endian)
2079- return unchanged (expr);
2080-
20812081 if (value.id ()==ID_with)
20822082 {
20832083 const with_exprt &with=to_with_expr (value);
20842084
2085- if (with.old ().id ()==ID_byte_extract_little_endian )
2085+ if (with.old ().id () == matching_byte_extract_id )
20862086 {
20872087 const byte_extract_exprt &extract=to_byte_extract_expr (with.old ());
20882088
@@ -2222,7 +2222,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
22222222 *update_size > 0 && m_size_bytes > *update_size))
22232223 {
22242224 byte_update_exprt v (
2225- ID_byte_update_little_endian ,
2225+ expr. id () ,
22262226 member_exprt (root, component.get_name (), component.type ()),
22272227 from_integer (*offset_int - *m_offset, offset.type ()),
22282228 value,
@@ -2241,7 +2241,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
22412241 else
22422242 {
22432243 byte_extract_exprt v (
2244- ID_byte_extract_little_endian ,
2244+ matching_byte_extract_id ,
22452245 value,
22462246 from_integer (*m_offset - *offset_int, offset.type ()),
22472247 expr.get_bits_per_byte (),
@@ -2287,7 +2287,7 @@ simplify_exprt::simplify_byte_update(const byte_update_exprt &expr)
22872287 bytes_req = (*val_size) / expr.get_bits_per_byte () - val_offset;
22882288
22892289 byte_extract_exprt new_val (
2290- ID_byte_extract_little_endian ,
2290+ matching_byte_extract_id ,
22912291 value,
22922292 from_integer (val_offset, offset.type ()),
22932293 expr.get_bits_per_byte (),
0 commit comments