[Bug middle-end/18008] [4.0 Regression] Duplicate mask on bitfield insertion
bonzini at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Jan 22 10:05:00 GMT 2005
------- 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
More information about the Gcc-bugs
mailing list