062f662fe2
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. |
||
---|---|---|
.. | ||
fenv.c | ||
fenv.h | ||
Makefile.inc | ||
s_fma.S | ||
s_fmaf.S |