------- Additional Comments From jakub at gcc dot gnu dot org 2005-02-16 19:14 ------- I'm still looking into it. While with -fno-strict-aliasing the important part of the dump is: # BLOCK 20 # PRED: 33 [100.0%] (fallthru) 30 [100.0%] (fallthru) # TMT.382D.16594_470 = PHI <TMT.382D.16594_1015(33), TMT.382D.16594_1010(30)>; <L110>:; D.16463_352 = &thisD.16043_125->D.11755._M_implD.11232._M_finishD.11380; __iD.16464_353 = D.16463_352; # VUSE <TMT.382D.16594_470>; SR.538D.16754_354 = *__iD.16464_353; D.16471_365 = SR.538D.16754_354 - 4B; # VUSE <TMT.382D.16594_470>; D.16033_377 = *D.16471_365; ... <L117>:; # VUSE <TMT.382D.16594_470>; D.16404_339 = thisD.16043_125->D.11755._M_implD.11232._M_finishD.11380; D.16405_340 = D.16404_339 - 4B; # TMT.382D.16594_1015 = V_MAY_DEF <TMT.382D.16594_470>; thisD.16043_125->D.11755._M_implD.11232._M_finishD.11380 = D.16405_340; ... loop to 110, so TMT.382D.16594_470 = PHI <TMT.382D.16594_1015(33), TMT.382D.16594_1010(30)> is in the loop, with -fstrict-aliasing we have: # BLOCK 19 # PRED: 17 [100.0%] (fallthru,exec) 28 [100.0%] (fallthru) # TMT.412D.16624_469 = PHI <TMT.412D.16624_1050(17), TMT.412D.16624_1037(28)>; # TMT.411D.16623_22 = PHI <TMT.411D.16623_392(17), TMT.411D.16623_244(28)>; # D.16251_470 = PHI <D.16251_380(17), D.16251_242(28)>; # D.16077_471 = PHI <D.16077_384(17), D.16077_243(28)>; <L97>:; ... # BLOCK 20 # PRED: 33 [100.0%] (fallthru) 30 [100.0%] (fallthru) # TMT.411D.16623_2 = PHI <TMT.411D.16623_260(33), TMT.411D.16623_22(30)>; <L110>:; D.16491_352 = &thisD.16071_125->D.11755._M_implD.11232._M_finishD.11380; __iD.16492_353 = D.16491_352; # VUSE <TMT.412D.16624_469>; SR.574D.16790_354 = *__iD.16492_353; D.16499_365 = SR.574D.16790_354 - 4B; # VUSE <D.16077_280>; # VUSE <D.16251_279>; D.16061_377 = *D.16499_365; ...
but TMT.412D.16624_469 = PHI <TMT.412D.16624_1050(17), TMT.412D.16624_1037(28)> is outside of the loop (loop starts at L110). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19786