Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Add mc_snapshot_read_pointer()
authorGabriel Corona <gabriel.corona@loria.fr>
Thu, 3 Jul 2014 10:58:34 +0000 (12:58 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Fri, 4 Jul 2014 11:23:59 +0000 (13:23 +0200)
src/mc/mc_compare.cpp
src/mc/mc_private.h

index 7a6dcf8..bf0a7ec 100644 (file)
@@ -160,9 +160,8 @@ static int compare_areas_with_type(struct mc_compare_state& state,
   case DW_TAG_reference_type:
   case DW_TAG_rvalue_reference_type:
   {
-    void* temp;
-    void* addr_pointed1 = *(void**) mc_snapshot_read_region(real_area1, region1, &temp, sizeof(void**));
-    void* addr_pointed2 = *(void**) mc_snapshot_read_region(real_area2, region2, &temp, sizeof(void**));
+    void* addr_pointed1 = mc_snapshot_read_pointer_region(real_area1, region1);
+    void* addr_pointed2 = mc_snapshot_read_pointer_region(real_area2, region2);
 
     if (type->subtype && type->subtype->type == DW_TAG_subroutine_type) {
       return (addr_pointed1 != addr_pointed2);
index 68102ec..cef441e 100644 (file)
@@ -764,6 +764,12 @@ void* mc_snapshot_read_region(void* addr, mc_mem_region_t region, void* target,
   }
 }
 
+static inline __attribute__ ((always_inline))
+void* mc_snapshot_read_pointer_region(void* addr, mc_mem_region_t region)
+{
+  void* res;
+  return *(void**) mc_snapshot_read_region(addr, region, &res, sizeof(void*));
+}
 
 SG_END_DECL()