diff options
author | Andy Postnikov <apostnikov@gmail.com> | 2016-12-10 23:51:17 +0300 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-12-02 18:10:17 +0100 |
commit | d6d4f2a9b38cd7fa7e938142e49e5a514d612e52 (patch) | |
tree | 715323973149ca88af872136da75ccb4dd01ed8a | |
parent | 958fdc997cd1fe3c6ff654ac470ba66768bdf214 (diff) | |
download | php-git-d6d4f2a9b38cd7fa7e938142e49e5a514d612e52.tar.gz |
Fix ZEND_SIGNED_MULTIPLY_LONG for AArch64
Register operands are required in this context.
This is a backport of 8c8679207ae5ada8751288e75b78c928a4d34d1d
to PHP 7.0+. The current code caused incorrect behavior on AArch64
when compiling with clang.
-rw-r--r-- | Zend/zend_multiply.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index e156d33a16..c66e19248f 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -53,8 +53,8 @@ __asm__("mul %0, %2, %3\n" \ "smulh %1, %2, %3\n" \ "sub %1, %1, %0, asr #63\n" \ - : "=X"(__tmpvar), "=X"(usedval) \ - : "X"(a), "X"(b)); \ + : "=&r"(__tmpvar), "=&r"(usedval) \ + : "r"(a), "r"(b)); \ if (usedval) (dval) = (double) (a) * (double) (b); \ else (lval) = __tmpvar; \ } while (0) |