aboutsummaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorDavid Schultz <das@FreeBSD.org>2005-03-05 20:34:45 +0000
committerDavid Schultz <das@FreeBSD.org>2005-03-05 20:34:45 +0000
commitf4a564300518cf7a60557c4b7e680ab9a086a83b (patch)
tree8c2afc0654fec0a65cb52419b675e5d0aac281d3 /lib/libc
parent494f3ca1827d04ed83305a44a506f31ffddd5179 (diff)
Work around a gcc bug. This fixes feholdexcept() et al. at -O1.
Symptoms of the problem included assembler warnings and nondeterministic runtime behavior when a fe*() call that affects the fpsr is closely followed by a float point op. The bug (at least, I think it's a bug) is that gcc does not insert a break between a volatile asm and a dependent instruction if the volatile asm came from an inlined function. Volatile asms seem to be fine in other circumstances, even without -mvolatile-asm-stop, so perhaps the compiler adds the stop bits before inlining takes place. The problem does not occur at -O0 because inlining is disabled, and it doesn't happen at -O2 because -fschedule-insns2 knows better.
Notes
Notes: svn path=/head/; revision=143165
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions