https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92765
--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> --- As for __builtin_*_eq, we could have some analysis that looks at accesses from the same base, and e.g. if there is struct S { char name[16]; int whatever; } and we see strcmp (p->name, ...) and p->whatever stored or loaded before that or after that with no possibility to exit/abort etc. in between, we could still optimize into *_eq. Doesn't tree-if-conv.c have similar analysis (ifc_dr etc.)? Maybe it would need to know minimal page size and only trigger if the read/write of a field after it isn't too far away as a guarantee that in a valid program if the first byte of p->name doesn't trap, then others won't either.