Skip to content

Commit b780909

Browse files
committed
process_array_expr: handle ID_cond
1 parent 77fdeb0 commit b780909

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/goto-symex/symex_clean_expr.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,28 @@ process_array_expr(exprt &expr, bool do_simplify, const namespacet &ns)
5050

5151
if_expr.type()=if_expr.true_case().type();
5252
}
53+
else if(expr.id() == ID_cond)
54+
{
55+
cond_exprt &cond_expr = to_cond_expr(expr);
56+
typet result_type;
57+
for(std::size_t i = 0; i < cond_expr.get_n_cases(); ++i)
58+
{
59+
process_array_expr(cond_expr.value(i), do_simplify, ns);
60+
if(i == 0)
61+
result_type = cond_expr.value(i).type();
62+
else if(cond_expr.value(i).type() != result_type)
63+
{
64+
cond_expr.value(i) =
65+
byte_extract_exprt(
66+
byte_extract_id(),
67+
cond_expr.value(i),
68+
from_integer(0, index_type()),
69+
result_type);
70+
}
71+
}
72+
73+
cond_expr.type() = result_type;
74+
}
5375
else if(expr.id()==ID_address_of)
5476
{
5577
// strip

0 commit comments

Comments
 (0)