https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108552
--- Comment #25 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #24) > Does > > diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc > index 0dd47910f97..f780c0ce08c 100644 > --- a/gcc/tree-ssa-loop-ivopts.cc > +++ b/gcc/tree-ssa-loop-ivopts.cc > @@ -2241,7 +2241,7 @@ may_be_nonaddressable_p (tree expr) > { > case VAR_DECL: > /* Check if it's a register variable. */ > - return DECL_HARD_REGISTER (expr); > + return DECL_HARD_REGISTER (expr) || DECL_NONALIASED (expr); > > case TARGET_MEM_REF: > /* TARGET_MEM_REFs are translated directly to valid MEMs on the > > fix it? Ah, reading more comments, no - it probably doesn't. Jakub correctly says that there seems to be a data race necessary to trigger this, so it doesn't seem to be a GCC issue?