- if (current_variable->address != NULL) {
- new_var.address = current_variable->address;
- } else if (current_variable->location_list.size != 0) {
- s_mc_location_t location;
- mc_dwarf_resolve_locations(
- &location, ¤t_variable->location_list,
- current_variable->object_info,
- &(stack_frame->unw_cursor),
- (void *) stack_frame->frame_base,
- &mc_model_checker->process(), process_index);
-
- switch(mc_get_location_type(&location)) {
- case MC_LOCATION_TYPE_ADDRESS:
- new_var.address = location.memory_location;
- break;
- case MC_LOCATION_TYPE_REGISTER:
- default:
+ if (current_variable.address != nullptr)
+ new_var.address = current_variable.address;
+ else if (!current_variable.location_list.empty()) {
+ simgrid::dwarf::Location location =
+ simgrid::dwarf::resolve(
+ current_variable.location_list,
+ current_variable.object_info,
+ &(stack_frame->unw_cursor),
+ (void *) stack_frame->frame_base,
+ &mc_model_checker->process(), process_index);
+
+ if (!location.in_memory())