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.