Attached an offending sample project reduced to minimal
The line:
d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;
Generate a compiler bug.
The workaround:
if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))
{
//d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; //Compiler failure line! Compiler BUG
int appo = TDEFL_LZ_DICT_SIZE + dst_pos;
d->m_dict[appo] = c;
}
The bug affects only the 64bits targets. 32bits targets aren't affected by the bug.