[Bug target/32593] Missed optimization of 'y = constant - x' operation

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Nov 7 14:36:00 GMT 2009



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



More information about the Gcc-bugs mailing list