https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70416
--- Comment #21 from Oleg Endo <olegendo at gcc dot gnu.org> --- (In reply to Oleg Endo from comment #18) > > The GCC testsuite results look OK. However, CSiBE shows > > sum: 3342539 -> 3351695 +9156 / +0.273924 % > > which is not so nice. For example, in bzip2/blocksort, the increase seems > to be caused mainly by things like: > > before after > mov #92,r0 mov r15,r0 > sub r7,r6 add #64,r0 > mov.l @(r0,r15),r5 sub r7,r6 > mov.l @(28,r0),r5 Just out of curiosity, I've tried to move the last two *addsi3 patterns to the very bottom of sh.md (with the small patch in c#15 applied before). Funnily, the impossible asm reload problem pops up again and CSiBE numbers go back to normal. So it seems there's something to my theory in c#14. When reload is emitting the address reg modification insns, it first looks for the "Ry = Rx + const" and if that is not found it tries the @(reg + reg) mode instead. Trying to "fix" this with the ordering of addsi3 patterns seems a bit weird. I'll see if there's some other way...