Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Jan 2005 16:37:55 -0500
From:      David Schultz <das@FreeBSD.ORG>
To:        src-committers@FreeBSD.ORG, cvs-src@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/lib/msun/alpha fenv.h src/lib/msun/amd64 fenv.h src/lib/msun/arm fenv.h src/lib/msun/i387 fenv.h src/lib/msun/ia64 fenv.h src/lib/msun/powerpc fenv.h src/lib/msun/sparc64 fenv.h
Message-ID:  <20050114213755.GA99555@VARK.MIT.EDU>
In-Reply-To: <200501140709.j0E79NTA046894@repoman.freebsd.org>
References:  <200501140709.j0E79NTA046894@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 14, 2005, David Schultz wrote:
> das         2005-01-14 07:09:23 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     lib/msun/alpha       fenv.h 
>     lib/msun/amd64       fenv.h 
>     lib/msun/arm         fenv.h 
>     lib/msun/i387        fenv.h 
>     lib/msun/ia64        fenv.h 
>     lib/msun/powerpc     fenv.h 
>     lib/msun/sparc64     fenv.h 
>   Log:
>   Mark all inline asms that read the floating-point control or status
>   registers as volatile.  Instructions that *wrote* to FP state were
>   already marked volatile, but apparently gcc has license to move
>   non-volatile asms past volatile asms.  This broke amd64's feupdateenv
>   at -O2 due to a WAR conflict between fnstsw and fldenv there.

Bah.  I knew I wasn't crazy when I wrote the original code.  From
the gcc documentation:

	In addition, GCC will not reschedule instructions across a
	volatile `asm' instruction.

The fact that I saw otherwise is either a compiler bug or a
documentation bug and has apparently been reported previously.
I have filed a test case as a followup to gcc bug 17884:

	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17884



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050114213755.GA99555>