Commit edbc28ce authored by R David Murray's avatar R David Murray

#21167: Fix definition of NAN when ICC used without -fp-model strict.

Patch from Chris Hogan of Intel, reviewed by Mark Dickinson.
parent 9632ea2f
...@@ -150,7 +150,29 @@ PyAPI_FUNC(void) _Py_set_387controlword(unsigned short); ...@@ -150,7 +150,29 @@ PyAPI_FUNC(void) _Py_set_387controlword(unsigned short);
* doesn't support NaNs. * doesn't support NaNs.
*/ */
#if !defined(Py_NAN) && !defined(Py_NO_NAN) #if !defined(Py_NAN) && !defined(Py_NO_NAN)
#define Py_NAN (Py_HUGE_VAL * 0.) #if !defined(__INTEL_COMPILER)
#define Py_NAN (Py_HUGE_VAL * 0.)
#else /* __INTEL_COMPILER */
#if defined(ICC_NAN_STRICT)
#pragma float_control(push)
#pragma float_control(precise, on)
#pragma float_control(except, on)
#if defined(_MSC_VER)
__declspec(noinline)
#else /* Linux */
__attribute__((noinline))
#endif /* _MSC_VER */
static double __icc_nan()
{
return sqrt(-1.0);
}
#pragma float_control (pop)
#define Py_NAN __icc_nan()
#else /* ICC_NAN_RELAXED as default for Intel Compiler */
static union { unsigned char buf[8]; double __icc_nan; } __nan_store = {0,0,0,0,0,0,0xf8,0x7f};
#define Py_NAN (__nan_store.__icc_nan)
#endif /* ICC_NAN_STRICT */
#endif /* __INTEL_COMPILER */
#endif #endif
/* Py_OVERFLOWED(X) /* Py_OVERFLOWED(X)
......
...@@ -583,6 +583,7 @@ Gregor Hoffleit ...@@ -583,6 +583,7 @@ Gregor Hoffleit
Chris Hoffman Chris Hoffman
Stefan Hoffmeister Stefan Hoffmeister
Albert Hofkamp Albert Hofkamp
Chris Hogan
Tomas Hoger Tomas Hoger
Jonathan Hogg Jonathan Hogg
Kamilla Holanda Kamilla Holanda
......
...@@ -10,6 +10,9 @@ Release date: tba ...@@ -10,6 +10,9 @@ Release date: tba
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #21167: NAN operations are now handled correctly when python is
compiled with ICC even if -fp-model strict is not specified.
- Issue #4395: Better testing and documentation of binary operators. - Issue #4395: Better testing and documentation of binary operators.
Patch by Martin Panter. Patch by Martin Panter.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment