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 debug/48343] [4.6/4.7 Regression] ICE compiling i586 linux-2.6.38/drivers/staging/wlan-ng/p80211wep.c: in form_sum, at reload.c:5338


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aoliva at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-30 15:16:55 UTC ---
So, before combiner we have:
(insn 23 22 24 3 (parallel [
            (set (reg:SI 98)
                (plus:SI (reg:SI 97 [ prephitmp.9 ])
                    (reg/v:SI 64 [ j ])))
            (clobber (reg:CC 17 flags))
        ]) pr48343.c:12 252 {*addsi_1}
     (expr_list:REG_DEAD (reg:SI 97 [ prephitmp.9 ])
        (expr_list:REG_DEAD (reg/v:SI 64 [ j ])
            (expr_list:REG_UNUSED (reg:CC 17 flags)
                (nil)))))

(insn 24 23 25 3 (parallel [
            (set (reg:SI 99)
                (zero_extend:SI (mem/s/j:QI (plus:SI (plus:SI (reg/f:SI 20
frame)
                                (reg/v:SI 71 [ i ]))
                            (const_int -320 [0xfffffffffffffec0])) [0 s S1
A8])))
            (clobber (reg:CC 17 flags))
        ]) pr48343.c:12 123 {*zero_extendqisi2_movzbl_and}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))

(insn 25 24 27 3 (parallel [
            (set (reg:SI 66 [ D.1999 ])
                (plus:SI (reg:SI 98)
                    (reg:SI 99)))
            (clobber (reg:CC 17 flags))
        ]) pr48343.c:12 252 {*addsi_1}
     (expr_list:REG_DEAD (reg:SI 99)
        (expr_list:REG_DEAD (reg:SI 98)
            (expr_list:REG_UNUSED (reg:CC 17 flags)
                (nil)))))

(debug_insn 27 25 28 3 (var_location:SI k (reg/v:SI 71 [ i ])) pr48343.c:13 -1
     (nil))

(debug_insn 28 27 29 3 (var_location:SI i (and:SI (reg:SI 66 [ D.1999 ])
        (const_int 255 [0xff]))) pr48343.c:13 -1
     (nil))

and SUBST_MODE is applied to pseudo 98 when i2 is insn 23 and i3 is insn 25,
after a previous propagate_for_debug set of changes which were with i3 insn 30.

So, IMHO we don't want to stop at i3 for propagate_for_debug if we are retrying
(goto retry in combine_instructions), instead we want to stop at the last i3
we've been processing in the current BB.

I'll try to write a patch.


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