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/37436] arm-cross-g++. internal compiler error: in extract_insn, at recog.c:1990



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


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