37 typedef std::list<irep_idt> symbol_listt;
38 symbol_listt symbol_list;
43 !symbol_pair.second.is_type && !symbol_pair.second.is_macro &&
44 symbol_pair.second.type.id() == ID_code &&
45 (symbol_pair.second.mode == ID_C || symbol_pair.second.mode == ID_cpp ||
46 symbol_pair.second.mode == ID_java || symbol_pair.second.mode ==
"jsil"))
48 symbol_list.push_back(symbol_pair.first);
52 for(
const auto &
id : symbol_list)
63 if(!symbol_pair.second.is_type &&
64 symbol_pair.second.type.id()==ID_code &&
65 symbol_pair.second.value.is_not_nil())
67 symbol_pair.second.value=
codet();
77 for(
const auto &label : i_it->labels)
90 if(!f.body.instructions.empty() &&
91 f.body.instructions.back().is_return())
95 if(!f.body.instructions.empty() &&
96 f.body.instructions.back().is_goto() &&
97 f.body.instructions.back().guard.is_true())
101 if(!f.body.instructions.empty())
104 f.body.instructions.end();
110 if(last_instruction->is_goto() &&
111 last_instruction->guard.is_true())
115 if(last_instruction->is_return())
119 if(last_instruction->is_dead() &&
120 last_instruction!=f.body.instructions.begin() &&
121 !last_instruction->is_target())
135 t->source_location=source_location;
145 if(f.body_available())
169 end_function->source_location=end_location;
170 end_function->code.
set(ID_identifier, identifier);
175 f.type.return_type().id()!=ID_empty &&
176 f.type.return_type().id()!=ID_constructor &&
177 f.type.return_type().id()!=ID_destructor;
186 if(!f.body.instructions.empty() &&
192 f.body.insert_before_swap(f.body.instructions.begin(), a_begin);
195 a_end->make_atomic_end();
196 a_end->source_location=end_location;
200 if(i_it->is_goto() && i_it->get_target()->is_end_function())
201 i_it->set_target(a_end);
206 f.body.destructive_append(tmp_end_function);
209 f.update_instructions_function(identifier);
225 symbol_table_builder, goto_model.
goto_functions, message_handler);
237 symbol_table_builder, message_handler);
252 symbol_table_builder, message_handler);