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