Make the integer overflow evaluator continue into expressions with non-literal types, notably void.
In passing it fixes a crash attempting to codegen:
struct A { char x; }; struct B : virtual A {}; A &a = ((A&)*(B*)0);
which we nearly have a test for except that it casted to void and therefore was ignored instead of being evaluated. The existing test (test/SemaCXX/cstyle-cast.cpp) is sufficient to cover this case now that we don't stop at a void cast.