From: Arnaud Giersch Date: Fri, 27 Apr 2012 12:16:18 +0000 (+0200) Subject: Workaround problem with excess precision on i387 FPU. X-Git-Tag: v3_7~35^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5fead7e79bf187e79ccae8055ae8fbf6c439bdad Workaround problem with excess precision on i387 FPU. See http://gcc.gnu.org/PR323. --- diff --git a/src/surf/maxmin.c b/src/surf/maxmin.c index de1750b7e8..047004309e 100644 --- a/src/surf/maxmin.c +++ b/src/surf/maxmin.c @@ -366,6 +366,8 @@ static XBT_INLINE int saturated_constraint_set_update(lmm_system_t sys, cnst, double *min_usage) { + volatile double usage; + XBT_IN("sys=%p, cnst=%p, min_usage=%f", sys, cnst, *min_usage); if (cnst->usage <= 0) { XBT_OUT(); @@ -375,13 +377,14 @@ static XBT_INLINE int saturated_constraint_set_update(lmm_system_t sys, XBT_OUT(); return 1; } - if ((*min_usage < 0) || (*min_usage > cnst->remaining / cnst->usage)) { - *min_usage = cnst->remaining / cnst->usage; + usage = cnst->remaining / cnst->usage; + if (*min_usage < 0 || *min_usage > usage) { + *min_usage = usage; XBT_HERE(" min_usage=%f (cnst->remaining=%f, cnst->usage=%f)", *min_usage, cnst->remaining, cnst->usage); xbt_swag_reset(&sys->saturated_constraint_set); xbt_swag_insert(cnst, &sys->saturated_constraint_set); - } else if (*min_usage == cnst->remaining / cnst->usage) { + } else if (*min_usage == usage) { xbt_swag_insert(cnst, &sys->saturated_constraint_set); } XBT_OUT();