@@ -108,6 +108,30 @@ TEST_CASE("expr2bits and bits2expr respect bit order", "[core][util]")
108
108
const auto should_be_deadbeef2 =
109
109
bits2expr (*be, unsignedbv_typet (32 ), false , ns);
110
110
REQUIRE (deadbeef == *should_be_deadbeef2);
111
+
112
+ c_bit_field_typet four_bits{unsignedbv_typet{8 }, 4 };
113
+ struct_typet st{{{" s" , unsignedbv_typet{16 }},
114
+ {" bf1" , four_bits},
115
+ {" bf2" , four_bits},
116
+ {" b" , unsignedbv_typet{8 }}}};
117
+
118
+ const auto fill_struct_le = bits2expr (*le, st, true , ns);
119
+ REQUIRE (fill_struct_le.has_value ());
120
+ REQUIRE (
121
+ to_struct_expr (*fill_struct_le).operands ()[1 ] ==
122
+ from_integer (0xd , four_bits));
123
+ REQUIRE (
124
+ to_struct_expr (*fill_struct_le).operands ()[2 ] ==
125
+ from_integer (0xa , four_bits));
126
+
127
+ const auto fill_struct_be = bits2expr (*be, st, false , ns);
128
+ REQUIRE (fill_struct_be.has_value ());
129
+ REQUIRE (
130
+ to_struct_expr (*fill_struct_be).operands ()[1 ] ==
131
+ from_integer (0xb , four_bits));
132
+ REQUIRE (
133
+ to_struct_expr (*fill_struct_be).operands ()[2 ] ==
134
+ from_integer (0xe , four_bits));
111
135
}
112
136
113
137
TEST_CASE (" Simplify extractbit" , " [core][util]" )
0 commit comments