https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84470
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=21474 --- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> --- Whoops, struct B should have a member before the array: struct B { char c, a[4]; }; void b (struct B *p) { if (p->a == 0) // can never be true __builtin_abort (); // can be eliminated (as Clang does) } Clang does warn for both tests but eliminates only the one in test case above. This might actually be a duplicate of bug 21474.