http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46675
Uros Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|middle-end |tree-optimization --- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2010-11-27 11:14:56 UTC --- It is vrp2 pass that miscompiles attached preprocessed file. gcc-build/gcc/cc1 -O2 -fprofile-use ************* _.122t.reassoc2: --cut here-- <bb 291>: # i_1950 = PHI <i_224(312), 0(290)> # lastkey_1951 = PHI <key_1983(312), 0(290)> vfr.11_1984 = vfr; D.25742_1985 = vfr.11_1984->PC; D.25743_1987 = vfr.11_1984->current_method; D.25744_1988 = D.25743_1987->code_length; if (D.25742_1985 >= D.25744_1988) goto <bb 292>; else goto <bb 293>; ... <bb 312>: # prephitmp.1242_3787 = PHI <prephitmp.1236_3781(310), pretmp.1241_3786(311)> D.25872_2132 = prephitmp.1242_3787->current_state; merge_into (npc_2135, D.25872_2132); printf (&"i = %i\n"[0], i_1950); i_224 = i_1950 + 1; if (i_224 < npairs_1969) goto <bb 291>; else goto <bb 313>; <bb 313>: <bb 314>: vfr.56_882 = vfr; vfr.56_882->PC = -1; goto <bb 14> (<L386>); --cut here-- ************* _.123t.vrp: --cut here-- <bb 295>: # lastkey_1951 = PHI <0(294), key_1983(315)> i_1950 = 0; vfr.11_1984 = vfr; D.25742_1985 = vfr.11_1984->PC; D.25743_1987 = vfr.11_1984->current_method; D.25744_1988 = D.25743_1987->code_length; if (D.25742_1985 >= D.25744_1988) goto <bb 296>; else goto <bb 297>; ... <bb 315>: # prephitmp.1242_3787 = PHI <prephitmp.1236_3781(313), pretmp.1241_3786(314)> D.25872_2132 = prephitmp.1242_3787->current_state; merge_into (npc_2135, D.25872_2132); printf (&"i = %i\n"[0], 0); i_224 = 1; if (npairs_1969 > 1) goto <bb 295>; else goto <bb 316>; <bb 316>: --cut here-- See how i_1950 in _.123t.vrp dump gets assigned to zero and consequently i_224 to one.