This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/37436] arm-cross-g++. internal compiler error: in extract_insn, at recog.c:1990
- From: "rearnsha at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Dec 2008 15:38:18 -0000
- Subject: [Bug target/37436] arm-cross-g++. internal compiler error: in extract_insn, at recog.c:1990
- References: <bug-37436-16681@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from rearnsha at gcc dot gnu dot org 2008-12-10 15:38 -------
Some notes on the failure path:
combine generates the pattern
(insn 1466 1464 1467 192 regeximp.h:320 (set (reg:SI 1002)
(sign_extend:SI (mem/s/j:QI (plus:SI (reg:SI 1000)
(mult:SI (reg/v:SI 246 [ opValue.1977 ])
(const_int 32 [0x20])))
[note the address in the mem is not in canonical form]
Register allocation realises that a scaled register is not permitted for a
sign_extend(mem()) operation and splits the entire sub-expression into a
separate insn. However, because that insn is not in canonical form, it then
fails to recognize the result.
--
rearnsha at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rearnsha at gcc dot gnu dot
| |org
Keywords| |ice-on-valid-code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37436