[Bug middle-end/45720] [4.6 regression] Revision 164367 miscompiled SPEC CPU 2K

2010-10-21 Thread vladimir.a.kharchenko at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45720

--- Comment #6 from Vladimir Kharchenko  2010-10-22 04:28:46 UTC ---
Quick investigation of 450.soplex failure shows that Segmentation fault is in
line 966 (file factor.cc). When I recompiled this file without the option
"-ffast=math", test passed.


[Bug middle-end/45720] [4.6 regression] Revision 164367 miscompiled SPEC CPU 2K

2010-10-22 Thread vladimir.a.kharchenko at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45720

--- Comment #8 from Vladimir Kharchenko  2010-10-22 10:15:16 UTC ---
It can happen that this file is minimal test case. :(
The piece of source:
961  if ((l_maxabs = temp.s_max[rw]) < 0)
962  {
963 l_maxabs = fabs(u.row.val[len]);
964
965 for (i = len - 1; i >= beg; --i)
966if (l_maxabs < fabs(u.row.val[i]))  > Seg. fault
967   l_maxabs = fabs(u.row.val[i]);
968
969 temp.s_max[rw] = l_maxabs;   /* # */
970  }
is executed many times in this test before Segmentation fault.
GDB shows that all objects (l_maxabs, fabs(u.row.val[i]), len, i, beg) have
correct values after Seg exception. Instructions after disassembler:
0x0041385b :   
and$0x7,%r8d
0x0041385f :   
movapd 0x0(%rbp),%xmm2 > Seg. fault
0x00413864 :   
cmp%r11d,%edx
also looks correct. %rbp points to correct memory.

So I have no hypotheses about the reason of this exception.
Maybe, it was indirect jump into the middle of instruction.
I will continue attemts to create short test case after weekend.