http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58656
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- cptrf2 shows <bb 32>: - pretmp_278 = (integer(kind=8)) ival2_72; - pretmp_279 = pretmp_278 + -1; - pretmp_280 = *xxtrt_23(D)[pretmp_279]; <bb 33>: # ival2_130 = PHI <ival2_50(32), ival2_138(36)> # ival2_134 = PHI <ival2_72(32), ival2_140(36)> - # prephitmp_281 = PHI <pretmp_280(32), prephitmp_255(36)> _131 = (integer(kind=8)) ival2_130; _132 = _131 + -1; _133 = *xxtrt_23(D)[_132]; _135 = (integer(kind=8)) ival2_134; _136 = _135 + -1; - _137 = prephitmp_281; + _137 = *xxtrt_23(D)[_136]; if (_133 < _137) goto <bb 34>; else gentrs has a difference as well. It's partial-PRE results differing (we don't have many partial-PRE testcases). The reason for the difference is likely "failed" translations which are cached over insert iterations. I have a patch.