Prevent multiple evaluation of macro argument. Index: fixed.h --- fixed.h.orig +++ fixed.h @@ -358,15 +358,15 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_ * significant bit depends on OPT_ACCURACY via mad_f_scale64(). */ # define MAD_F_MLX(hi, lo, x, y) \ - do { \ + ({ mad_fixed_t __x = (x); \ + mad_fixed_t __y = (y); \ asm ("mullw %0,%1,%2" \ : "=r" (lo) \ - : "%r" (x), "r" (y)); \ + : "%r" (__x), "r" (__y)); \ asm ("mulhw %0,%1,%2" \ : "=r" (hi) \ - : "%r" (x), "r" (y)); \ - } \ - while (0) + : "%r" (__x), "r" (__y)); \ + }) # if defined(OPT_ACCURACY) /*