https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102216
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > The problem is dead code: > language_names_p_9 = &MEM <const char *> [(void *)_4 + 24B]; > MEM[(const char * *)_4 + 24B] = ""; > MEM[(const char * *)_4 + 32B] = ""; > MEM[(const char * *)_4 + 40B] = 0B; > _2 = _4 + 40; > D.50907._M_comp = compare_cstrings; > __comp = D.50907; > if (_2 != language_names_p_9) > goto <bb 3>; [53.47%] > else > goto <bb 12>; [46.53%] > > <bb 3> [local count: 574129759]: > _15 = _2 - language_names_p_9; > _16 = _15 /[ex] 8; > > ... > _22 = _2 - language_names_p_9; I have a (hack) patch which removes the first if statement but still does not fold _15 and _22.