@@ -70,36 +70,36 @@ void goto_symext::symex_allocate(
70
70
else
71
71
{
72
72
// to allow constant propagation
73
- exprt tmp_size = state.rename_level2 (size, ns);
74
- simplify (tmp_size, ns);
73
+ level2t< exprt> tmp_size = state.rename_level2 (size, ns);
74
+ simplify (tmp_size. expr , ns);
75
75
76
76
// special treatment for sizeof(T)*x
77
77
{
78
- const auto tmp_type = c_sizeof_type_rec (tmp_size);
78
+ const auto tmp_type = c_sizeof_type_rec (tmp_size. expr );
79
79
80
80
if (tmp_type.has_value ())
81
81
{
82
82
// Did the size get multiplied?
83
83
auto elem_size = pointer_offset_size (*tmp_type, ns);
84
- const auto alloc_size = numeric_cast<mp_integer>(tmp_size);
84
+ const auto alloc_size = numeric_cast<mp_integer>(tmp_size. expr );
85
85
86
86
if (!elem_size.has_value () || *elem_size==0 )
87
87
{
88
88
}
89
89
else if (
90
- !alloc_size.has_value () && tmp_size.id () == ID_mult &&
91
- tmp_size.operands ().size () == 2 &&
92
- (tmp_size.op0 ().is_constant () ||
93
- tmp_size.op1 ().is_constant ()))
90
+ !alloc_size.has_value () && tmp_size.expr . id () == ID_mult &&
91
+ tmp_size.expr . operands ().size () == 2 &&
92
+ (tmp_size.expr . op0 ().is_constant () ||
93
+ tmp_size.expr . op1 ().is_constant ()))
94
94
{
95
- exprt s = tmp_size.op0 ();
95
+ exprt s = tmp_size.expr . op0 ();
96
96
if (s.is_constant ())
97
97
{
98
- s = tmp_size.op1 ();
99
- PRECONDITION (*c_sizeof_type_rec (tmp_size.op0 ()) == *tmp_type);
98
+ s = tmp_size.expr . op1 ();
99
+ PRECONDITION (*c_sizeof_type_rec (tmp_size.expr . op0 ()) == *tmp_type);
100
100
}
101
101
else
102
- PRECONDITION (*c_sizeof_type_rec (tmp_size.op1 ()) == *tmp_type);
102
+ PRECONDITION (*c_sizeof_type_rec (tmp_size.expr . op1 ()) == *tmp_type);
103
103
104
104
object_type = array_typet (*tmp_type, s);
105
105
}
@@ -112,15 +112,15 @@ void goto_symext::symex_allocate(
112
112
mp_integer elements = *alloc_size / (*elem_size);
113
113
114
114
if (elements * (*elem_size) == *alloc_size)
115
- object_type =
116
- array_typet ( *tmp_type, from_integer (elements, tmp_size.type ()));
115
+ object_type = array_typet (
116
+ *tmp_type, from_integer (elements, tmp_size. expr .type ()));
117
117
}
118
118
}
119
119
}
120
120
}
121
121
122
122
if (!object_type.has_value ())
123
- object_type= array_typet (unsigned_char_type (), tmp_size);
123
+ object_type = array_typet (unsigned_char_type (), tmp_size. expr );
124
124
125
125
// we introduce a fresh symbol for the size
126
126
// to prevent any issues of the size getting ever changed
@@ -136,7 +136,7 @@ void goto_symext::symex_allocate(
136
136
size_symbol.base_name =
137
137
" dynamic_object_size" +std::to_string (dynamic_counter);
138
138
size_symbol.name =" symex_dynamic::" +id2string (size_symbol.base_name );
139
- size_symbol.type = tmp_size.type ();
139
+ size_symbol.type = tmp_size.expr . type ();
140
140
size_symbol.mode = mode;
141
141
size_symbol.type .set (ID_C_constant, true );
142
142
size_symbol.value = array_size;
@@ -163,14 +163,14 @@ void goto_symext::symex_allocate(
163
163
state.symbol_table .add (value_symbol);
164
164
165
165
// to allow constant propagation
166
- exprt zero_init = state.rename_level2 (code.op1 (), ns);
167
- simplify (zero_init, ns);
166
+ level2t< exprt> zero_init = state.rename_level2 (code.op1 (), ns);
167
+ simplify (zero_init. expr , ns);
168
168
169
169
INVARIANT (
170
- zero_init.is_constant (),
170
+ zero_init.expr . is_constant (),
171
171
" allocate expects constant as second argument" );
172
172
173
- if (!zero_init.is_zero () && !zero_init.is_false ())
173
+ if (!zero_init.expr . is_zero () && !zero_init. expr .is_false ())
174
174
{
175
175
const auto zero_value =
176
176
zero_initializer (*object_type, code.source_location (), ns);
@@ -234,9 +234,9 @@ void goto_symext::symex_gcc_builtin_va_arg_next(
234
234
return ; // ignore
235
235
236
236
// to allow constant propagation
237
- exprt tmp = state.rename_level2 (code.op0 (), ns);
238
- do_simplify (tmp);
239
- irep_idt id = get_symbol (tmp);
237
+ level2t< exprt> tmp = state.rename_level2 (code.op0 (), ns);
238
+ do_simplify (tmp. expr );
239
+ irep_idt id = get_symbol (tmp. expr );
240
240
241
241
const auto zero = zero_initializer (lhs.type (), code.source_location (), ns);
242
242
CHECK_RETURN (zero.has_value ());
@@ -311,10 +311,10 @@ void goto_symext::symex_printf(
311
311
{
312
312
PRECONDITION (!rhs.operands ().empty ());
313
313
314
- exprt tmp_rhs = state.rename_level2 (rhs, ns);
315
- do_simplify (tmp_rhs);
314
+ level2t< exprt> tmp_rhs = state.rename_level2 (rhs, ns);
315
+ do_simplify (tmp_rhs. expr );
316
316
317
- const exprt::operandst &operands = tmp_rhs.operands ();
317
+ const exprt::operandst &operands = tmp_rhs.expr . operands ();
318
318
std::list<exprt> args;
319
319
320
320
for (std::size_t i=1 ; i<operands.size (); i++)
@@ -335,19 +335,19 @@ void goto_symext::symex_input(
335
335
{
336
336
PRECONDITION (code.operands ().size () >= 2 );
337
337
338
- exprt id_arg = state.rename_level2 (code.op0 (), ns);
338
+ level2t< exprt> id_arg = state.rename_level2 (code.op0 (), ns);
339
339
340
340
std::list<exprt> args;
341
341
342
342
for (std::size_t i=1 ; i<code.operands ().size (); i++)
343
343
{
344
344
args.push_back (code.operands ()[i]);
345
- exprt l2_arg = state.rename_level2 (args.back (), ns);
346
- do_simplify (l2_arg);
347
- args.back () = std::move (l2_arg);
345
+ level2t< exprt> l2_arg = state.rename_level2 (args.back (), ns);
346
+ do_simplify (l2_arg. expr );
347
+ args.back () = std::move (l2_arg. expr );
348
348
}
349
349
350
- const irep_idt input_id = get_string_argument (id_arg, ns);
350
+ const irep_idt input_id = get_string_argument (id_arg. expr , ns);
351
351
352
352
target.input (state.guard .as_expr (), state.source , input_id, args);
353
353
}
@@ -357,19 +357,19 @@ void goto_symext::symex_output(
357
357
const codet &code)
358
358
{
359
359
PRECONDITION (code.operands ().size () >= 2 );
360
- exprt id_arg = state.rename_level2 (code.op0 (), ns);
360
+ level2t< exprt> id_arg = state.rename_level2 (code.op0 (), ns);
361
361
362
362
std::list<exprt> args;
363
363
364
364
for (std::size_t i=1 ; i<code.operands ().size (); i++)
365
365
{
366
366
args.push_back (code.operands ()[i]);
367
- exprt l2_arg = state.rename_level2 (args.back (), ns);
368
- do_simplify (l2_arg);
369
- args.back () = std::move (l2_arg);
367
+ level2t< exprt> l2_arg = state.rename_level2 (args.back (), ns);
368
+ do_simplify (l2_arg. expr );
369
+ args.back () = std::move (l2_arg. expr );
370
370
}
371
371
372
- const irep_idt output_id= get_string_argument (id_arg, ns);
372
+ const irep_idt output_id = get_string_argument (id_arg. expr , ns);
373
373
374
374
target.output (state.guard .as_expr (), state.source , output_id, args);
375
375
}
@@ -477,7 +477,7 @@ void goto_symext::symex_trace(
477
477
irep_idt event = to_string_constant (code.arguments ()[1 ].op0 ()).get_value ();
478
478
479
479
for (std::size_t j=2 ; j<code.arguments ().size (); j++)
480
- vars.push_back (state.rename_level2 (code.arguments ()[j], ns));
480
+ vars.push_back (state.rename_level2 (code.arguments ()[j], ns). expr );
481
481
482
482
target.output (state.guard .as_expr (), state.source , event, vars);
483
483
}
0 commit comments