------- 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

Reply via email to