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.