This is C++ equivalent of PR78987 Starting from 4.8, where location description was added. $ cat /tmp/wrong-conditions.c void foo() {} void bar() {} void baz() {} int main2(int argc, int argc2) { if (foo && bar && baz) return 1; return 0; } $ ./xg++ -B. /tmp/wrong-conditions.c -c -Wall /tmp/wrong-conditions.c: In function ‘int main2(int, int)’: /tmp/wrong-conditions.c:7:14: warning: the address of ‘void foo()’ will never be NULL [-Waddress] if (foo && bar && baz) ^~~ /tmp/wrong-conditions.c:7:14: warning: the address of ‘void bar()’ will never be NULL [-Waddress] /tmp/wrong-conditions.c:7:21: warning: the address of ‘void baz()’ will never be NULL [-Waddress] if (foo && bar && baz) ^~~ Where location of 'foo' is wrong and location for 'bar' is missing.
Confirmed. The location doesn't look right in C either where GCC prints the following: b.c: In function ‘main2’: b.c:7:7: warning: the address of ‘foo’ will always evaluate as ‘true’ [-Waddres] if (foo && bar && baz) ^~~ b.c:7:11: warning: the address of ‘bar’ will always evaluate as ‘true’ [-Waddress] if (foo && bar && baz) ^~ b.c:7:18: warning: the address of ‘baz’ will always evaluate as ‘true’ [-Waddress] if (foo && bar && baz) ^~
David will you be interested in the PR?