------- Comment #5 from rguenth at gcc dot gnu dot org 2007-10-23 14:26 ------- This is wrong alias info. We hoist
# VUSE <SFT.6_108> p_42 = result.pDirty; out of the loop. It looks like we don't have VUSEs of a and MPT.47 here like # VUSE <a_115, MPT.47_116> p_38 = p_35->pDirty; because results address is only taken from within a PHI node: # pD.1574_36 = PHI <&resultD.1619(6), pD.1574_84(11)> It also happens that with -O alias analysis only runs once. The pointed-to vars of pD.1574_36 include SFT.6, but # aD.1573_113 = VDEF <aD.1573_90> # MPT.47D.1693_114 = VDEF <MPT.47D.1693_103> pD.1574_36->pDirtyD.1552 = pD.1574_33; and SFT.6 is not in partition MPT.47. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33870