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.
This commit is contained in:
Uroš Bizjak 2019-01-24 10:22:55 -08:00 committed by Richard Henderson
parent a0bb5abd09
commit 8d0168264a
2 changed files with 10 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-01-24 Uroš Bizjak <ubizjak@gmail.com>
[BZ #24130]
* sysdeps/alpha/remqu.S (__remqu): Add missing restore
of $f3 register on $y_is_neg path.
2019-01-24 Samuel Thibault <samuel.thibault@ens-lyon.org>
* hurd/hurdsig.c (_hurd_thread_sigstate): Set SS_DISABLE in

View File

@ -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