https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19347
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- The vectorizer already moves the load out of the loop after the runtime alias-check. The vectorizer could hoist the load out of the scalar epilogue loop, that's missing, or it could annotate refs with dependence info so a later invariant motion pass could do this. There is a missed optimization for regular invariant motion or rather TBAA alias analysis. While osmesa->buffer might point to the clearpixel member, once we advance to the buffer member we may no longer access the clearpixel member via the osmesa_context structure (storing via unsigned int into buffer makes the dynamic type of the context no longer osmesa_context). But it's hard to exploit this I think.