summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_multiply.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h
index be41e588c3..30433d77d8 100644
--- a/Zend/zend_multiply.h
+++ b/Zend/zend_multiply.h
@@ -19,11 +19,13 @@
#if defined(__i386__) && defined(__GNUC__)
#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long __tmpvar; \
__asm__ ("imul %3,%0\n" \
"adc $0,%1" \
- : "=r"(lval),"=r"(usedval) \
+ : "=r"(__tmpvar),"=r"(usedval) \
: "0"(a), "r"(b), "1"(0)); \
if (usedval) (dval) = (double) (a) * (double) (b); \
+ else (lval) = __tmpvar; \
} while (0)
#else