http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38785
--- Comment #33 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-11-16 18:00:54 UTC --- And at -O3 the testcase does not look really good indeed <bb 7>: # cstore_51 = PHI <0(5), 2147483647(6)> # prephitmp_82 = PHI <1073741823(5), 3221225470(6)> # prephitmp_83 = PHI <1789569705(5), 3937053352(6)> # prephitmp_84 = PHI <2326440616(5), 4473924263(6)> # prephitmp_85 = PHI <2755937345(5), 4903420992(6)> # prephitmp_86 = PHI <3113851286(5), 5261334933(6)> # prephitmp_87 = PHI <2684354557(5), 4831838204(6)> # prephitmp_88 = PHI <2219066434(5), 4366550081(6)> # prephitmp_89 = PHI <2576980375(5), 4724464022(6)> # prephitmp_90 = PHI <2147483646(5), 4294967293(6)> # prephitmp_91 = PHI <1610612734(5), 3758096381(6)> # prephitmp_92 = PHI <2040109463(5), 4187593110(6)> # prephitmp_93 = PHI <2398023404(5), 4545507051(6)> # prephitmp_94 = PHI <1968526675(5), 4116010322(6)> # prephitmp_95 = PHI <1503238552(5), 3650722199(6)> # prephitmp_96 = PHI <1861152493(5), 4008636140(6)> # prephitmp_97 = PHI <1431655764(5), 3579139411(6)> # prephitmp_98 = PHI <715827882(5), 2863311529(6)> # prephitmp_99 = PHI <1252698793(5), 3400182440(6)> # prephitmp_100 = PHI <1682195522(5), 3829679169(6)> # prephitmp_103 = PHI <1145324611(5), 3292808258(6)> # prephitmp_106 = PHI <536870911(5), 2684354558(6)> # prephitmp_107 = PHI <966367640(5), 3113851287(6)> # prephitmp_108 = PHI <1324281581(5), 3471765228(6)> # prephitmp_109 = PHI <894784852(5), 3042268499(6)> # prephitmp_110 = PHI <429496729(5), 2576980376(6)> # prephitmp_111 = PHI <787410670(5), 2934894317(6)> # prephitmp_112 = PHI <357913941(5), 2505397588(6)> *_18 = cstore_51; _24 = *_20; _25 = _24 << 2; if (_25 >= -14) goto <bb 8>; else goto <bb 9>; The catch is that the patch disabled the partial PRE by an accident. No cold edges are involved here since we predict all the branches quite even :(