------- Comment #1 from drow at gcc dot gnu dot org 2009-07-07 15:03 ------- It looks, roughly speaking, like the two nearby addresses are initially commonized. In the process, the use after the loop ends up sharing a REG with the use in the loop. Then the use in the loop is changed to use a new copy, and the initialization in the loop feeds the out-of-loop copy. And the use in the loop gets materialized above the loop as it should.
In a quick look I didn't work out which RTL pass is at fault. -- drow at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |drow at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40672