------- Comment #6 from rguenth at gcc dot gnu dot org 2009-11-07 14:35 ------- On the tree level we see (after FRE):
D.1996_50 = pix_1 + 1; D.1997_51 = 1 - stride_11(D); D.1998_52 = (unsigned int) D.1997_51; D.1999_53 = pix_1 + D.1998_52; D.2000_54 = *D.1999_53; D.2003_57 = block_2 + 2; D.2004_58 = *D.2003_57; D.2005_59 = (unsigned char) D.2004_58; D.2006_60 = D.2000_54 + D.2005_59; *D.1996_50 = D.2006_60; etc. which again also shows the weakness of POINTER_PLUS_EXPR and the conversions it causes for the offset operand. IVOPTs cannot cope with it and PRE/LIM make a mess out of the code as well. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32593