This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/38991] [4.3/4.4 Regression] SH: ICE in extract_insn at recog.c:1990



------- Comment #2 from kkojima at gcc dot gnu dot org  2009-02-03 13:31 -------
It seems that the move insn in problem is generated when reloading
but has no insn definition matched.

The patch

--- ORIG/trunk/gcc/config/sh/predicates.md      2008-04-05 09:19:14.000000000
+0900
+++ INTEST/trunk/gcc/config/sh/predicates.md    2009-02-03 14:40:07.000000000
+0900
@@ -392,12 +392,6 @@
        return 0;
     }

-  if ((mode == QImode || mode == HImode)
-      && (GET_CODE (op) == SUBREG
-         && GET_CODE (XEXP (op, 0)) == REG
-         && system_reg_operand (XEXP (op, 0), mode)))
-    return 0;
-
   if (TARGET_SHMEDIA
       && (GET_CODE (op) == PARALLEL || GET_CODE (op) == CONST_VECTOR)
       && sh_rep_vec (op, mode))

will workaround this issue, though it may be slightly invasive
and a thorough test will be needed.

BTW, the asm statement in the test case looks a bit worse than

__asm__( "swap.b %1, %0;" : "=r" (__reg) : "r" ((unsigned short) t));

which give a chance for compiler to allocate better registers
in general.  The above asm can avoid this PR too.


-- 

kkojima at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kkojima at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |ice-on-valid-code
      Known to fail|                            |4.3.3 4.4.0
      Known to work|                            |4.2.4
           Priority|P3                          |P4
   Last reconfirmed|0000-00-00 00:00:00         |2009-02-03 13:31:38
               date|                            |
            Summary|ICE in extract_insn at      |[4.3/4.4 Regression] SH: ICE
                   |recog.c:1990                |in extract_insn at
                   |                            |recog.c:1990


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38991


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]