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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |avr
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |4.6.2
           Keywords|                            |ice-on-valid-code
   Last reconfirmed|                            |2012-02-03
          Component|target                      |rtl-optimization
                 CC|                            |gjl at gcc dot gnu.org
     Ever Confirmed|0                           |1
            Summary|[4.7 regression][avr] ICE:  |[4.7
                   |in extract_insn, at         |regression][lower-subreg.c]
                   |recog.c:2123                |ICE: in extract_insn, at
                   |                            |recog.c:2123
   Target Milestone|---                         |4.7.0

--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-03 
18:47:10 UTC ---
The ICE happens in .split2 and can be avoided by -fno-split-wide-types

The strange concatn insn 26 is generated in pass .subreg2 after .split1
generated the following sequence for the multiply:

(insn 26 6 27 2 (set (reg:HI 55)
        (zero_extend:HI (reg:QI 48 [ inactivityTimer ]))) pr52113.cpp:10 -1
     (nil))

(insn 27 26 29 2 (set (reg:HI 56)
        (const_int 1000 [0x3e8])) pr52113.cpp:10 -1
     (nil))

(insn 29 27 30 2 (set (reg:HI 18 r18)
        (reg:HI 55)) pr52113.cpp:10 -1
     (nil))

(insn 30 29 31 2 (set (reg:HI 26 r26)
        (reg:HI 56)) pr52113.cpp:10 -1
     (nil))

(insn 31 30 32 2 (set (reg:SI 22 r22)
        (mult:SI (zero_extend:SI (reg:HI 18 r18))
            (zero_extend:SI (reg:HI 26 r26)))) pr52113.cpp:10 -1
     (nil))

(insn 32 31 9 2 (set (reg:SI 49)
        (reg:SI 22 r22)) pr52113.cpp:10 -1
     (nil))

The sequence comes from .split1 that splitted the following pattern that was
sythesized by combine:

(insn 8 6 9 2 (parallel [
            (set (reg:SI 49)
                (mult:SI (zero_extend:SI (reg:QI 48 [ inactivityTimer ]))
                    (const_int 1000 [0x3e8])))
            (clobber (reg:HI 26 r26))
            (clobber (reg:DI 18 r18))
        ]) pr52113.cpp:10 111 {muluqisi3}

Reply via email to