From: Gabriel Corona Date: Thu, 24 Apr 2014 09:38:13 +0000 (+0200) Subject: [mc] Do not use "simdata" variable (workaround for broken test) X-Git-Tag: v3_11~102^2~10^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/f531053ecaa55192503e810870cc996652447da5 [mc] Do not use "simdata" variable (workaround for broken test) With DWARF4, the "simdata" variables in a nested scope seems to prevent state equality detection and breaks a test : * happens with DWARF4 ; * does not happen it the variable is at the main scope of the function ; * the variable is found either way (DWARF2 and DWARF4) ; * the scope addresses seems fine in both versions of DWARF (the semantic of the DW_AT_high_pc is different but it is handled correctly). As a temporary workaround, not using this variable fixes the test. --- diff --git a/src/msg/msg_gos.c b/src/msg/msg_gos.c index 7c01ce1e53..d5d5988c61 100644 --- a/src/msg/msg_gos.c +++ b/src/msg/msg_gos.c @@ -630,10 +630,9 @@ int MSG_comm_test(msg_comm_t comm) if (finished && comm->task_received != NULL) { /* I am the receiver */ - simdata_task_t simdata = (*comm->task_received)->simdata; - if (msg_global->debug_multiple_use && simdata->isused!=0) - xbt_ex_free(*(xbt_ex_t*)simdata->isused); - simdata->isused = 0; + if (msg_global->debug_multiple_use && (*comm->task_received)->simdata->isused!=0) + xbt_ex_free(*(xbt_ex_t*)(*comm->task_received)->simdata->isused); + (*comm->task_received)->simdata->isused = 0; } } CATCH(e) { @@ -707,10 +706,9 @@ int MSG_comm_testany(xbt_dynar_t comms) if (status == MSG_OK && comm->task_received != NULL) { /* I am the receiver */ - simdata_task_t simdata = (*comm->task_received)->simdata; - if (msg_global->debug_multiple_use && simdata->isused!=0) - xbt_ex_free(*(xbt_ex_t*)simdata->isused); - simdata->isused = 0; + if (msg_global->debug_multiple_use && (*comm->task_received)->simdata->isused!=0) + xbt_ex_free(*(xbt_ex_t*)(*comm->task_received)->simdata->isused); + (*comm->task_received)->simdata->isused = 0; } } @@ -743,10 +741,9 @@ msg_error_t MSG_comm_wait(msg_comm_t comm, double timeout) if (comm->task_received != NULL) { /* I am the receiver */ - simdata_task_t simdata = (*comm->task_received)->simdata; - if (msg_global->debug_multiple_use && simdata->isused!=0) - xbt_ex_free(*(xbt_ex_t*)simdata->isused); - simdata->isused = 0; + if (msg_global->debug_multiple_use && (*comm->task_received)->simdata->isused!=0) + xbt_ex_free(*(xbt_ex_t*)(*comm->task_received)->simdata->isused); + (*comm->task_received)->simdata->isused = 0; } /* FIXME: these functions are not traceable */ @@ -833,10 +830,9 @@ int MSG_comm_waitany(xbt_dynar_t comms) if (comm->task_received != NULL) { /* I am the receiver */ - simdata_task_t simdata = (*comm->task_received)->simdata; - if (msg_global->debug_multiple_use && simdata->isused!=0) - xbt_ex_free(*(xbt_ex_t*)simdata->isused); - simdata->isused = 0; + if (msg_global->debug_multiple_use && (*comm->task_received)->simdata->isused!=0) + xbt_ex_free(*(xbt_ex_t*)(*comm->task_received)->simdata->isused); + (*comm->task_received)->simdata->isused = 0; } return finished_index; diff --git a/src/msg/msg_mailbox.c b/src/msg/msg_mailbox.c index 557b26a8bf..017472ee56 100644 --- a/src/msg/msg_mailbox.c +++ b/src/msg/msg_mailbox.c @@ -132,10 +132,9 @@ MSG_mailbox_get_task_ext_bounded(msg_mailbox_t mailbox, msg_task_t * task, TRY { simcall_comm_recv(mailbox, task, NULL, NULL, NULL, timeout, rate); XBT_DEBUG("Got task %s from %p",(*task)->name,mailbox); - simdata_task_t simdata = (*task)->simdata; - if (msg_global->debug_multiple_use && simdata->isused!=0) - xbt_ex_free(*(xbt_ex_t*)simdata->isused); - simdata->isused = 0; + if (msg_global->debug_multiple_use && (*task)->simdata->isused!=0) + xbt_ex_free(*(xbt_ex_t*)(*task)->simdata->isused); + (*task)->simdata->isused = 0; } CATCH(e) { switch (e.category) {