diff options
author | Uroš Bizjak <ubizjak@gmail.com> | 2019-01-24 10:22:55 -0800 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2019-01-24 10:28:13 -0800 |
commit | 8d0168264a689ab82b55887132a4db0081a24f93 (patch) | |
tree | 4335e00088c2d87c5f127b3ae1822965db0bc2bc /sysdeps | |
parent | a0bb5abd09e3d0f66c3dccf70bf74c8b2d7cc1c2 (diff) | |
download | glibc-8d0168264a689ab82b55887132a4db0081a24f93.tar glibc-8d0168264a689ab82b55887132a4db0081a24f93.tar.gz glibc-8d0168264a689ab82b55887132a4db0081a24f93.tar.bz2 glibc-8d0168264a689ab82b55887132a4db0081a24f93.zip |
alpha: Fix __remqu corrupting $f3 register
There was missing restore of $f3 before the return from the function
via the $y_is_neg path. This caused the math/big testcase from Go-1.11
testsuite (that includes lots of corner cases that exercise remqu) FAIL.
[BZ #24130]
* sysdeps/alpha/remqu.S (__remqu): Add missing restore
of $f3 register on $y_is_neg path.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/alpha/remqu.S | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/alpha/remqu.S b/sysdeps/alpha/remqu.S index c2c5caf3c2..a240ee9735 100644 --- a/sysdeps/alpha/remqu.S +++ b/sysdeps/alpha/remqu.S @@ -246,12 +246,16 @@ $y_is_neg: quotient must be either 0 or 1, so the remainder must be X or X-Y, so just compute it directly. */ cmpule Y, X, AT + excb + mt_fpcr $f3 subq X, Y, RV ldt $f0, 0(sp) + ldt $f3, 48(sp) cmoveq AT, X, RV lda sp, FRAME(sp) cfi_restore ($f0) + cfi_restore ($f3) cfi_def_cfa_offset (0) ret $31, (RA), 1 |