[IndVarSimplify] Eliminate zext of a signed IV when widening if the IV is known to be non-negative.
This was part of a previous diff (D18777), now separated into a new diff. This change eliminates zexts of IV when IV is treated as signed and is known to be non-negative.
The change in D18777 will fail a front-end test (Frontend/optimization-remark-options.c) and this change should fix this test.
The new check for isa<ZExtInst> seems unnecessary.
If DU.NeverNegative is true, it means DU.WideDef will have zeroes
in its upper bits regardless of whether it was created with a Zext or Sext.
This is the first time I've looked at this code, so I don't know if you can
simply delete this part of the check, or if you must at least verify
that DU.NarrowUse is some flavor of Extend (as opposed to an
arbitrary instruction).