For non-integer constants/expressions and overdefined, I think we can
just use SimplifyBinOp to do common folds. By just passing a context
with the DL, SimplifyBinOp should not try to get additional information
from looking at definitions.
For overdefined values, it should be enough to just pass the original
operand.
Note: The comment before the if (isconstant(V1State)... was wrong
originally: isConstant() also matches integer ranges with a single
element. It is correct now.
This patch depends on a few ConstantRange improvements for all tests to
pass.
Sort of orthogonal, but the thought occurred to me: should we be trying to use the "undef" lattice state here?