This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/38991] [4.3/4.4 Regression] SH: ICE in extract_insn at recog.c:1990
- From: "kkojima at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 3 Feb 2009 13:31:39 -0000
- Subject: [Bug target/38991] [4.3/4.4 Regression] SH: ICE in extract_insn at recog.c:1990
- References: <bug-38991-11406@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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