http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43772
--- Comment #10 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2012-04-28 12:32:49 UTC --- (In reply to comment #9) > For : x>=INT_MIN && x<=INT_MAX > the code creates a range for x>=INT_MIN, another range for x<=INT_MAX, merges > them into a single range, checks that that range is trivial (empty or full), > and then warns according to the operator && or ||. It forgets to check first > whether the first 2 ranges are trivial. But there is something strange, because it is warning "it is always false", which is obviously not true. So I think at some moment it is doing some transformation we don't want to do.