No in-tree effect as of now (as far as I know), but is logical, and allows me to do some certain combines that would otherwise infinite loop.
What the change does: doesn't convert zext(op(zext(X))) to op(zext(X))
Why: the larger op may be more expensive, and if the zext is free, there is no purpose to such a transform.
Really why: I want a combine in our GPU tree that shrinks (and zero extends the result of) large arithmetic operations, because smaller operations take fewer registers and are often faster as well. This will infinite loop if any combines occur on (zext (OP (x)) that result in making OP bigger again.