[Bug middle-end/45720] [4.6 regression] Revision 164367 miscompiled SPEC CPU 2K
vladimir.a.kharchenko at intel dot com
gcc-bugzilla@gcc.gnu.org
Fri Oct 22 10:16:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45720
--- Comment #8 from Vladimir Kharchenko <vladimir.a.kharchenko at intel dot com> 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)
966 if (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:
0x000000000041385b <soplex::CLUFactor::selectPivots(soplex::Real)+2203>:
and $0x7,%r8d
0x000000000041385f <soplex::CLUFactor::selectPivots(soplex::Real)+2207>:
movapd 0x0(%rbp),%xmm2 ----> Seg. fault
0x0000000000413864 <soplex::CLUFactor::selectPivots(soplex::Real)+2212>:
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.
More information about the Gcc-bugs
mailing list