PR 54168: Unnecessary narrowing in tree-ssa-forwprop pass?

Richard Earnshaw rearnsha@arm.com
Tue Jan 14 14:49:00 GMT 2014


On 14/01/14 14:32, Jakub Jelinek wrote:
> Anyway, the above is really a simple case, and I'd call it a
> backend bug if it isn't able to generate good code out of that.

Exactly which back-end pass are you expecting to simplify

(set (subreg:SI (reg:HI 1) 0) (and:SI (subreg:SI (reg:HI 0) 0)
(const_int 2)))

(set (reg:SI 2) (zero_extend:SI (reg:HI 1)))

(set (reg:SI 3) (ne:SI (reg:SI 2) (const_int 0)))

into

(set (reg:SI 2) (and:SI (subreg:SI (reg:HI 0) 0) (const_int 2)))

(set (reg:SI 3) (ne:SI (reg:SI 2) (const_int 0)))

Combine is about the only pass that does this sort of thing, and that's
far too often confused by extraneous information that it thinks might be
helpful, but isn't, or by the fact that the intermediate result is used
more than once.

R.



More information about the Gcc-patches mailing list