-
-
Notifications
You must be signed in to change notification settings - Fork 608
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix Issue 15316 - different NaN value in struct initializer #6163
Conversation
|
08bd9b6
to
9c508b1
Compare
|
Auto-merge toggled on |
- the fix to restore signaling NaNs after real->float/double conversions
was only applied to e2ir but not in todt, leading to different NaN
init values for floats fields in default initalized structs
- move precision conversion functions to CTFloat and handle SNAN case
- optimized gdc builts of dmd still loose SNANs way earlier when
initializing RealExp with TargetReal.snan
- some structs (e.g. struct S { float f; double d; }) get initialized
using x87 loads/stores from the __initZ initializer, this
initialization through the FPU still converts SNaNs to QNaNs
- fix SNaN init values for optimized gdc builds of dmd simple assignments might convert them to quiet NaNs
0bbe753
to
525caff
Compare
|
Changed to only a partial fix of Issue 15316. While now the object file only contains SNaNs, initialization assignment of the Note that it mostly works for |
|
Auto-merge toggled off until it passes so that it doesn't jug up the autotester. |
|
This seems like a hopeless endeavor, we have little control over the init code for the other backends (though they are unlikely to use x87, but other architectures might also silence SNaNs). |
was only applied to e2ir but not in todt, leading to different NaN
init values for floats fields in default initalized structs
optimized gdc builts of dmd still loose SNANs way earlier whenfixed in 0bbe753initializing RealExp with TargetReal.snan