http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52285
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-13 10:43:58 UTC --- I think (plus (frame) (const_int)) is likely not an issue (at least in the common case, could be only problem if eliminated into something that needs much bigger offset that doesn't fit into the instruction anymore), the problem is an eliminable register alone used somewhere where (plus (eliminate_to) (const_int small_int)) wouldn't be handled and thus would need to be reloaded. If loops are still around at LRA time, perhaps LRA should consider putting it before loop if register pressure is low, or LIM could just have extra code for this (first handle normal IV motions and just record if there are any eliminable regs not used inside of plus with const_int, and at the end if register pressure still isn't too high consider just creating a new insn that sets a pseudo to (frame) or other eliminable register before loop and replacing all uses of (frame) in the loop with that. I'm not saying it must be LIM, I'm just looking for suggestions where to perform this.