BImode is treated as normal byte-wide mode and causes bug.
Paolo Bonzini
bonzini@gnu.org
Wed Dec 22 14:33:00 GMT 2010
On 12/20/2010 12:43 PM, Claudiu Zissulescu wrote:
> Hi,
>
> Why don't you use a define_insn "zero_extendbisi2" which generates
> your conversion instruction.
You're right that this should be a valid workaround, but Bingfeng
reported a bug indeed.
(zero_extend:SI (reg:BI 120))
should have been transformed to
(and:SI (subreg:SI (reg:BI 120) 0)
(const_int 1 [0xff]))
and
(subreg:QI (zero_extend:SI (reg:BI 120)) 0)
to
(and:QI (subreg:QI (reg:BI 120) 0)
(const_int 1 [0xff]))
That said, his observation that
> Grep GET_MODE_PRECISION returns not many results.
... misses that GET_MODE_MASK will also return the correct value for
fractional integer modes. This macro has quite a few occurrences in
combine and elsewhere.
Paolo
More information about the Gcc
mailing list