------- Additional Comments From bonzini at gcc dot gnu dot org  2005-01-22 
10:04 -------
Combine ought to merge these two

(insn 13 11 14 1 (parallel [
            (set (reg:QI 60)
                (and:QI (subreg:QI (reg/v:SI 59 [ v ]) 0)
                    (const_int 3 [0x3])))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))

(insn 15 14 16 1 (parallel [
            (set (reg:SI 62)
                (zero_extend:SI (reg:QI 60)))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))

into

(insn 15 14 16 1 (parallel [
            (set (reg:SI 62)
                (zero_extend:SI (and:QI (subreg:QI (reg/v:SI 59 [ v ]) 0)
                    (const_int 3 [0x3]))))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))

which can be simplified via the expand_compound_operation machinery to

(insn 15 14 16 1 (parallel [
            (set (reg:SI 62)
                (and:SI (reg/v:SI 59 [ v ]) (const_int 3 [0x3])))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))

and the set of (reg:SI 63) from (and:SI (reg:SI 62) (const_int 3)) should be 
taken care of by the nonzero_bits stuff.  So it's feasible to have combine fix 
it, at least.

Hum, but maybe the clobber is messing up combine?

-- 


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

Reply via email to