http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50751
--- Comment #13 from Oleg Endo <oleg.e...@t-online.de> 2011-11-02 00:15:44 UTC --- Created attachment 25684 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25684 Proposed patch to add QImode displacement addressing This should be better now. I have also put back support for the SH2A displacement addressing insns. The CSiBE set compiles fine for -m2a, -m4-single, -m4a-single, both big and little endian. However, it introduces new failures in the testsuite. I have examined a few of them and one common problem seems to be of this nature: udivmod4.c:59:1: error: insn does not satisfy its constraints: (insn 313 312 194 (set (reg:SI 150 fpul) (mem/c:SI (plus:SI (reg/f:SI 15 r15) (const_int 8 [0x8])) [0 %sfp+-72 S4 A32])) udivmod4.c:54 192 {movsi_ie} (nil)) udivmod4.c:59:1: internal compiler error: in extract_constrain_insn_cached, at recog.c:2052 .. when compiled with -O0 -m4-single -mb. This is mainly caused by the following added lines in sh_legitimate_index_p: + if ((GET_MODE_SIZE (mode) == 1) && (unsigned) INTVAL (op) < 16) + return true; Apparently this makes something believe that loading the FPUL register from a displacement address is possible, which is of course not the case. However, I can't see any connection there...