[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