Currently, clang only diagnoses completely out-of-range comparisons (e.g. char and constant 300),
and comparisons of unsigned and 0. But gcc also does diagnose the comparisons with the
std::numeric_limits<>::max() / std::numeric_limits<>::min() so to speak
Finally Fixes https://bugs.llvm.org/show_bug.cgi?id=34147
Continuation of https://reviews.llvm.org/D37565
I'm having second thoughts about macro handling.
Right now we completely ignore the comparisons when the constant is anyhow involved with macros.
I.e.
Perhaps we should be a bit more strict, and should not bailout in such cases?
But i *guess* this case we still should ignore
(Even though gcc warns in the last variant too)