[Bug middle-end/29256] [4.2 regression] loop unrolling performance regression

rakdver at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Sep 28 14:15:00 GMT 2006



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



More information about the Gcc-bugs mailing list