------- Comment #10 from rakdver at gcc dot gnu dot org 2006-09-28 14:15 ------- (In reply to comment #8) > D.1563 = -&a; > MEM[base: (int *) D.1563 + &c, index: D.1562] = MEM[base: D.1562]; > > WTFFFFFFF
ivopts are having fun :-) On the other hand, this is (one of several possible) cheapest ways how to express the code, and it should not affect creation of offsetted modes on RTL, so although this is indeed somewhat curious (well, bug in fact, from reasons unrelated to the problem covered by this PR), it is not the cause of this problem. On x86, tree optimizers seem to do just fine, producing MEM[symbol: c, index: D.1569, step: 8B] = MEM[symbol: a, index: D.1569, step: 8B]; However, on RTL, we fail to create offsetted version of this addressing mode after unrolling. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256