https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66003
--- Comment #2 from amker at gcc dot gnu.org --- (In reply to Richard Biener from comment #1) > Hmm, I think IVOPTs should be able to undo this code motion? It can't. Address of all pointer dereferences except the first one are not even induction variables. The base address is loaded from memory by the first dereference.