On 09/15/2016 05:19 AM, Bernd Edlinger wrote:
+      if (warn_int_in_bool_context)
+       {
+         tree val1 = fold_for_warn (TREE_OPERAND (expr, 1));
+         tree val2 = fold_for_warn (TREE_OPERAND (expr, 2));
+         if (TREE_CODE (val1) == INTEGER_CST
+             && TREE_CODE (val2) == INTEGER_CST
+             && !integer_zerop (val1)
+             && !integer_zerop (val2)
+             && (!integer_onep (val1)
+                 || !integer_onep (val2)))
+           warning_at (EXPR_LOCATION (expr), OPT_Wint_in_bool_context,
+                       "?: using integer constants in boolean context");

I think this message could be more helpful; we're warning about code that always evaluates to 'true', so we could say something like "conditional expression always evaluates to true". In which case maybe your original warning name was better.

I'm also not sure we need to check integer_onep at all before giving that warning. Were you seeing a lot of false positives without that check?


Reply via email to