https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102555
Bug ID: 102555 Summary: missing -Waddress comparing &p[0] to zero Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- Event with the patch for pr102103 applied, only the first of the two equality expressions gets a warning, even though ideally both should. This is tracked (and xfailed) in gcc/testsuite/c-c++-common/Waddress-4.c. $ cat z.c && gcc -S -Wall -fdump-tree-original=/dev/stdout z.c int f (int *p, int i) { return &p[i] == 0; } int g (int *p) { return &p[0] == 0; } z.c: In function ‘f’: z.c:3:16: warning: the comparison will always evaluate as ‘false’ for the pointer operand in ‘p + (sizetype)((long unsigned int)i * 4)’ must not be NULL [-Waddress] 3 | return &p[i] == 0; | ^~ ;; Function f (null) ;; enabled by -tree-original { return p + (sizetype) ((long unsigned int) i * 4) == 0B; } ;; Function g (null) ;; enabled by -tree-original { return p == 0B; }