[Bug middle-end/28690] [4.2 Regression] Performace problem with indexed load/stores on powerpc

bergner at vnet dot ibm dot com gcc-bugzilla@gcc.gnu.org
Fri Sep 22 16:30:00 GMT 2006



------- Comment #12 from bergner at vnet dot ibm dot com  2006-09-22 16:30 -------
Anton dicovered that we don't get multiple dimensioned arrays like the
following test case:

int indexedload(int ***base, int idx0, int idx1, int idx2)
{
  return base[idx0][idx1][idx2];
}

This one leads to 3 indexed loads.  We transform the first indexed load ok, but
the other two we don't.  I tracked that down to force_reg (called from
break_out_memory_refs) doesn't propagate the MEM_POINTER flag to a REG_POINTER
flag on the reg it creates.  I posted/commited a fix which was approved:

    http://gcc.gnu.org/ml/gcc-patches/2006-09/msg00941.html

We now successfully transform all of the indexed loads in this test case now.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28690



More information about the Gcc-bugs mailing list