X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4b0aa1525597fd0800c4d00c6df3f3c49d53ee2c..7dd7e8a3d74476aa04576e756c9ba8bba2e74859:/src/mc/compare.cpp diff --git a/src/mc/compare.cpp b/src/mc/compare.cpp index ef934d6bad..47cfabd67a 100644 --- a/src/mc/compare.cpp +++ b/src/mc/compare.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2008-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -708,7 +708,6 @@ static int compare_heap_area_with_type( simgrid::mc::Type* subtype; simgrid::mc::Type* subsubtype; - int res; int elm_size; const void* addr_pointed1; const void* addr_pointed2; @@ -732,7 +731,6 @@ static int compare_heap_area_with_type( else return MC_snapshot_region_memcmp(real_area1, heap_region1, real_area2, heap_region2, type->byte_size) != 0; } - break; case DW_TAG_enumeration_type: if (area_size != -1 && type->byte_size != area_size) @@ -775,13 +773,12 @@ static int compare_heap_area_with_type( break; default: return 0; - break; } for (int i = 0; i < type->element_count; i++) { // TODO, add support for variable stride (DW_AT_byte_stride) - res = compare_heap_area_with_type(state, process_index, (char*)real_area1 + (i * elm_size), - (char*)real_area2 + (i * elm_size), snapshot1, snapshot2, previous, - type->subtype, subtype->byte_size, check_ignore, pointer_level); + int res = compare_heap_area_with_type(state, process_index, (char*)real_area1 + (i * elm_size), + (char*)real_area2 + (i * elm_size), snapshot1, snapshot2, previous, + type->subtype, subtype->byte_size, check_ignore, pointer_level); if (res == 1) return res; } @@ -809,6 +806,7 @@ static int compare_heap_area_with_type( for (size_t i = 0; i < (area_size / sizeof(void*)); i++) { addr_pointed1 = snapshot1->read(remote((void**)((char*)real_area1 + i * sizeof(void*))), process_index); addr_pointed2 = snapshot2->read(remote((void**)((char*)real_area2 + i * sizeof(void*))), process_index); + int res; if (addr_pointed1 > state.std_heap_copy.heapbase && addr_pointed1 < mc_snapshot_get_heap_end(snapshot1) && addr_pointed2 > state.std_heap_copy.heapbase && addr_pointed2 < mc_snapshot_get_heap_end(snapshot2)) res = compare_heap_area(state, process_index, addr_pointed1, addr_pointed2, snapshot1, snapshot2, previous, @@ -1238,6 +1236,7 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state, int res; do { + xbt_assert(type != nullptr); switch (type->type) { case DW_TAG_unspecified_type: return 1; @@ -1280,7 +1279,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state, break; default: return 0; - break; } for (i = 0; i < type->element_count; i++) { size_t off = i * elm_size; @@ -1335,7 +1333,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state, return (addr_pointed1 != addr_pointed2); } - break; } case DW_TAG_structure_type: case DW_TAG_class_type: @@ -1352,7 +1349,6 @@ static int compare_areas_with_type(simgrid::mc::StateComparator& state, break; case DW_TAG_subroutine_type: return -1; - break; default: XBT_VERB("Unknown case: %d", type->type); break; @@ -1382,12 +1378,9 @@ static int compare_global_variables( && process_count == r2->privatized_data().size()); // Compare the global variables separately for each simulates process: - for (size_t process_index = 0; process_index < process_count; process_index++) { - if (compare_global_variables(state, - object_info, process_index, - &r1->privatized_data()[process_index], - &r2->privatized_data()[process_index], - snapshot1, snapshot2)) + for (size_t i = 0; i < process_count; i++) { + if (compare_global_variables(state, object_info, i, &r1->privatized_data()[i], &r2->privatized_data()[i], + snapshot1, snapshot2)) return 1; } return 0;