[MLton] rounding modes and minimum gcc version
adam at spicenitz.org
Sat Apr 18 20:34:28 PDT 2009
On 04/18/2009 11:15 PM, Matthew Fluet wrote:
> On Sat, 18 Apr 2009, Adam Goode wrote:
>> Looking into IEEE rounding mode stuff more, it looks like for gcc, if
>> the rounding mode is going to be changed, then -frounding-math must be
>> set, or else behavior is undefined. Otherwise, gcc could perform
>> constant folding assuming the default rounding mode. I believe all of
>> the runtime and anything compiled with the C backend must have this flag
>> (but only if the rounding mode is actually ever changed from SML, is it
>> easy to tell?).
> I don't think this is necessary; do you have an example program that
> exhibits a bug?
No, I'm not seeing a particular bug, just in working on fixing up some ARM
rounding mode bugs was told that "If you don't use -frounding-math (or the
pragma) you are guaranteeing that code in the object will only ever execute
with the default rounding mode."
Here is the gcc option:
And C99 says:
"If part of a program tests floating-point status flags, sets
floating-point control modes, or runs under non-default mode settings,
but was translated with the state for the FENV_ACCESS pragma ‘‘off’’,
the behavior is undefined."
-frounding-math sets the default for FENV_ACCESS (which is otherwise
unimplemented in gcc), and so if you try to read or set the rounding
mode without -frounding-math, C99 allows for arbitrary behavior. I know
this is silly, but why not set the option?
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://mlton.org/pipermail/mlton/attachments/20090418/274ce994/signature.pgp
More information about the MLton