baloghadamsoftware added a comment. I think we should exclude unsigned types completely. `A >= B` is converted to `A - B >= 0`, thus the range of `A - B` is `[0 .. INT_MAX]` which is the full range for the unsigned type. This implies that upon any conditional statement `if (A >= B) ...` the range for the `false` is an empty range so the `else` branch is never executed. The following test fails:
`void wrong(int m, int n) { if (m >= n) return; clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} }` https://reviews.llvm.org/D35109 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits