I'm having a weird issue. I recently switched from using Intel 10.1 compiler to the latest XE2015. Some users are now reporting crashes, and after adding logging I found that the cause is that in several locations of my program NAN's are sometimes popping up. That makes sense since I don't always check for 0's in things like divisions - it would slow down the program far too much.
But what's weird is that the same code worked perfectly fine without crashing or other weird behavior before I switched to the new compiler. So, my question is: Is there anything different between these two? Ideally, I would have all NAN's automatically replaced by 0's - or any other number that responds properly to min and max calls. I usually do protect the output with min and max, but for NAN's that doesn't help; min(100, NAN) returns NAN and not 100...
(Note: I'm compiling multiple code paths, for SSE2, SSE3, SSE4.1, SSE4.2, AVX and AVX2. Some of the issues seem to happen more on older systems which would be using SSE3. In the old compiler I generated a single code path for SSE2).