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.