we are having an issue compiling c++ code using the thread_local feature from c++11 standard for non-POD types. The same code compiles without problems for the host architecture, but it cannot compile for MIC architecture.
These are the relevant lines from a unit test that will not compile for MIC:
Intel C++ 2016 on Windows is spitting out many warning #809 on code that never gave such warnings with previous versions and for which other compilers do not complain. It is related to virtual destructors in subclasses and says that the exception specification in the subclass destructor is incompatible with that of the overridden destructor. None of them have an explicit exception specification.
For now I'm disabling that warning but this appears to be a compiler issue. Comments?
Most cross-platform developers from the GNU world (according to anecdotal evidence) are familiar with using MingW and GCC in Windows, which works remarkably well and has become the de facto standard for compiling GNU-licensed tools such as x264, etc.
After two days wasted looking for some bad code, I realized the root of my issue was incorrect symlinks in /opt/intel install direcory in Linux.
I build some softwares with shared libraries. Thus I added this in my shell environment:
When I use MVC++ compiler running normally, using Intel c++ compiler the loop execution out-of-order(thread = 1).
The following code:
Here is a cut down demo for a bug I found with C++ 2016. The program dies at runtime at the stream.imbue call. If the E function is not marked inline it works fine.