https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70772
Bug ID: 70772 Summary: Wrong warning about unspecified behavior for comparison with string literal Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: ch3root at openwall dot com Target Milestone: --- While compiling such program: int main() { "abc" == "def"; } I get this warning: $ gcc -Wall -Wno-unused-value example.c example.c: In function ‘main’: example.c:3:9: warning: comparison with string literal results in unspecified behavior [-Waddress] "abc" == "def"; ^~ The warning is wrong, this equality cannot be true. I understand that the warning is intended to catch comparisons like "abc" == "abc" which indeed have an unspecified result. But the current warning is too promiscuous. The easy fix is to reformulate closer to "comparison with string literal is always false or has an unspecified result". The more thorough fix is to separately catch cases that could be proved to be false at compile time.