title: illegal instruction in boost::gregorian::date::date
body: <p>I have C++ program that uses boost (Logger mainly). This programs compiles and runs well on Windows and Ubuntu. However, when I try to port it to Linux Yocto on an embedded system (Intel Atom processor), I got illegal instructions error at runtime.</p>
  
  <p>The program itself is built on Ubuntu PC with Intel-i5.</p>
  
  <p>I debugged the issue and it was some AVX instructions from another library (OpenCV). I disabled all AVX and the problem solved but another problem occurred.</p>
  
  <p>It now tells me that (after reading the core dumb using <code>gdb</code>):</p>
  
  <blockquote>
    <p>Program terminated with signal SIGILL, Illegal instruction.
    0x00007fe1aed03ade in boost::gregorian::date::date(boost::gregorian::greg_year,
    boost::gregorian::greg_month, boost::gregorian::greg_day) ()</p>
  </blockquote>
  
  <ul>
  <li>I did not use <code>boost::gregorian::date</code> explicitly</li>
  <li>Is it possible that <code>boost::gregorian::date</code> use some optimized insruction?! like SSE or AVX? (seems non-logical)</li>
  <li>Any clue about the issue?</li>
  </ul>
  
  <p><strong>P.S.</strong> the error occurs at run-time before anything else. Even a <code>cout</code> at the first line of the main function is not executed before I got the error. So, I suspect some <code>static constructor</code> inside boost causes the problem since there is no static constructor at my code.</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>All librires and the program itself are compiled with <code>-march=bonnell -mno-avx -O2</code></p>