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.

Reply via email to