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...

Reply via email to