https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62171
--- Comment #5 from vries at gcc dot gnu.org --- (In reply to Richard Biener from comment #1) > It may already work > if you use C++ and > > static double __attribute__((noinline, noclone)) > f (struct omp_data_i &__restrict__ p, int argc) > { > > ? That is, if the middle-end uses a REFERENCE_TYPE? Confirmed, rewriting the example with 'struct omp_data_i &' and compiling with g++ solves the aliasing problem.