conservative_resize_1 fails on GCC (up to 4.4) in Debug mode (32bit+SSE) because GCC/i386 emits x87 fldl/fstpl instructions for _mm_load_sd

Submitted by Jitse Niesen

Assigned to Nobody

Link to original bugzilla bug (#195)
Version: 3.0
Operating system: Linux

Description

Created attachment 108

test program

I ran the test suite in Debug mode and to my surprise some of the tests fail (see http://eigen.tuxfamily.org/CDash/viewTest.php?onlyfailed&buildid=5090 ; that run was not done with the latest version of Eigen).

In particular, the conservative_resize_1 test failed. I boiled it down to the attached test case. It extends the matrix m using conservativeResizeLike(). For some reason, one of the coefficients of m is not copied over into the new matrix. All other coefficients are correct.

The output of the attached program is

Before: m(37,40) = -649311

Before: n(37,40) = -649311

Resizing m to be 66 by 58

After: m(37,40) = -125023

After: n(37,40) = -649311

I compiled the program using GCC 4.3.3 with -msse2 and no other compile flags, 32-bits Linux Fedora, current version of Eigen3.

Attachment 108, "test program":

rt.cpp

Blocking

#25 (closed)