31 dest=
xmlt(
"goto_trace");
35 for(
const auto &step : goto_trace.
steps)
41 xml_location=
xml(source_location);
56 if(!xml_location.
name.empty())
64 auto lhs_object = step.get_lhs_object();
66 lhs_object.has_value() ? lhs_object->get_identifier() :
irep_idt();
69 if(!xml_location.
name.empty())
73 auto lhs_object=step.get_lhs_object();
78 lhs_object.has_value() &&
79 !ns.
lookup(lhs_object->get_identifier(), symbol))
83 if(lhs_object.has_value() &&
84 !ns.
lookup(lhs_object->get_identifier(), symbol))
97 std::string full_lhs_string, full_lhs_value_string;
99 if(step.full_lhs.is_not_nil())
100 full_lhs_string =
from_expr(ns, identifier, step.full_lhs);
102 if(step.full_lhs_value.is_not_nil())
103 full_lhs_value_string =
from_expr(ns, identifier, step.full_lhs_value);
106 xml_assignment.
new_element(
"full_lhs_value").
data = full_lhs_value_string;
114 step.assignment_type ==
124 printf_formatter(
id2string(step.format_string), step.io_args);
125 std::string text = printf_formatter.
as_string();
134 if(!xml_location.
name.empty())
137 for(
const auto &arg : step.io_args)
155 for(
const auto &arg : step.io_args)
162 if(!xml_location.
name.empty())
169 std::string tag =
"function_call";
183 if(!xml_location.
name.empty())
190 std::string tag =
"function_return";
204 if(!xml_location.
name.empty())
221 if(source_location!=previous_source_location)
224 if(!xml_location.
name.empty())
240 previous_source_location=source_location;