[Ruben van Royen]
The problem is that the rounding mode affects all
floating point operations,
such as multiply and divide. And normally you must do rounding and not
truncation. Thus changing the mode will change the results, and a compiler is
not allowed to do that.
yes, and it is wise to check if the results you obtain under the
manually changed rounding rule fit your spec.
Only in very specific cases, such as a loop that
converts an array float
values to integers, where the truncation is the only floating point operation
in the loop, is the compiler allowed to do the mode settings outside the
loop. But I'm not sure if gcc does this.
i don't think it does, but the latest gcc i keep around is 3.0, and i
only use it to compare assembly output to 2.95 compilates.
afaik, the rounding mode handling is a peculiarity of the x86 arch,
and with gcc being a multi-arch compiler i can very well imagine the
gcc dev team omitting this special case.
tim