https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89126
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |linkw at gcc dot gnu.org --- Comment #4 from Kewen Lin <linkw at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #3) > Eventually, after the function returns the inequality expression without a > warning, c_parser_condition() calls c_fully_fold() on it which folds it into > a constant, without a warning. Happened to notice this PR when trying to answer the question [1]. The part doing the folding is from match.pd. /* Non-equality compare simplifications from fold_binary */ (for cmp (lt gt le ge) /* Comparisons with the highest or lowest possible integer of the specified precision will have known values. */ (simplify (cmp (convert?@2 @0) uniform_integer_cst_p@1) ... (if (wi::to_wide (cst) == max) (switch (if (cmp == GT_EXPR) { constant_boolean_node (false, type); }) (if (cmp == GE_EXPR) (eq @2 @1)) (if (cmp == LE_EXPR) { constant_boolean_node (true, type); }) I noticed there are some warning support in match.pd like fold_overflow_warning. Not sure whether we can add the similar supports there. Probably hard to get LOC? [1] https://gcc.gnu.org/pipermail/gcc-help/2021-January/139755.html