http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39423
--- Comment #15 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-07-06 22:04:15 UTC --- Created attachment 27754 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27754 combine pass based patch A possible combine pass based solution for the problem. It fixes the case mentioned in the original description. I've also briefly checked some CSiBE code size results with this patch applied to rev 189338 for '-m4-single -ml -O2 -mpretend-cmove'. It hits only a few spots, but if those are buried inside loops, it might be a win. I'm not sure what's the best thing to do if the mov.l displacement goes out of range... Chris, I know it's been a while but any old memories? :)