Skip to content

Commit

Permalink
Fix missing clobber in i386 __sincos_code asm.
Browse files Browse the repository at this point in the history
  • Loading branch information
frobtech committed Apr 9, 2012
1 parent c0ed9d7 commit 8de131c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2012-04-09 Roland McGrath <[email protected]>

* sysdeps/i386/fpu/bits/mathinline.h (__sincos_code): Don't clobber
%eax without telling the compiler.

2012-04-09 Carlos O'Donell <[email protected]>

[BZ # 13963]
Expand Down
14 changes: 7 additions & 7 deletions sysdeps/i386/fpu/bits/mathinline.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/* Inline math functions for i387.
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2003,2004,2006,2007,2009,
2010 Free Software Foundation, Inc.
Copyright (C) 1995-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by John C. Bowman <[email protected]>, 1995.
Expand Down Expand Up @@ -324,22 +323,23 @@ __inline_mathcode (__pow2, __x, \
# define __sincos_code \
register long double __cosr; \
register long double __sinr; \
register unsigned int __swtmp; \
__asm __volatile__ \
("fsincos\n\t" \
"fnstsw %%ax\n\t" \
"testl $0x400, %%eax\n\t" \
"fnstsw %w2\n\t" \
"testl $0x400, %2\n\t" \
"jz 1f\n\t" \
"fldpi\n\t" \
"fadd %%st(0)\n\t" \
"fxch %%st(1)\n\t" \
"2: fprem1\n\t" \
"fnstsw %%ax\n\t" \
"testl $0x400, %%eax\n\t" \
"fnstsw %w2\n\t" \
"testl $0x400, %2\n\t" \
"jnz 2b\n\t" \
"fstp %%st(1)\n\t" \
"fsincos\n\t" \
"1:" \
: "=t" (__cosr), "=u" (__sinr) : "0" (__x)); \
: "=t" (__cosr), "=u" (__sinr), "=a" (__swtmp) : "0" (__x)); \
*__sinx = __sinr; \
*__cosx = __cosr

Expand Down

0 comments on commit 8de131c

Please sign in to comment.