Quuxplusone added inline comments.

================
Comment at: test/CXX/expr/expr.unary/expr.unary.op/p6.cpp:18
 // --  pointer, 
 bool b6 = !&b4; // expected-warning{{address of 'b4' will always evaluate to 
'true'}}
+// expected-warning@-1 {{comparing 'bool *' as a boolean}}
----------------
This is not "comparing" anything, so the warning seems inappropriate here. 
Maybe "implicitly converting 'bool *' to 'bool' in operand of '!'` would be 
more appropriate?

Please add test cases for `operator!`, `operator&&`, `operator||`, and 
`operator?`.


================
Comment at: test/Sema/static-init.c:10
 intptr_t s = (intptr_t) &s;
-_Bool t = &t;
+_Bool t = &t; // expected-warning {{comparing '_Bool *' as a boolean}}
 
----------------
Again, not "comparing" anything.
Incidentally, do you know why this line fails to produce an "address of 't' 
will always evaluate to 'true'" warning?


================
Comment at: test/SemaCXX/warn-bool-ptr-to-bool.cpp:5
+  if (b)
+    // expected-warning@-1 {{comparing 'bool *' as a boolean}}
+    return 10;
----------------
Please add a test case

```
template<class T>
T foo(T *ptr) {
    return ptr ? *ptr : T{};
}
bool bar(bool *ptr) { return foo(ptr); }
```

and make sure the warning does not trigger in this case. (It would be OK to 
trigger a clang-tidy check in this case, but IMHO not a `-W -Wall -Wextra` 
warning.)


https://reviews.llvm.org/D45601



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to