https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80853

            Bug ID: 80853
           Summary: [6/7/8 Regression] OpenMP ICE in build_outer_var_ref
                    with array reduction
           Product: gcc
           Version: 7.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

void
foo (int *p)
{
  #pragma omp for reduction(+:p[:4])
  for (int i = 0; i < 64; i++)
    {
      p[0] += i;
      p[1] += i / 2;
      p[2] += 2 * i;
      p[3] += 3 * i;
    }
}

ICEs with -fopenmp in both C and C++ starting with GCC 6 (when array reduction
support has been introduced).  For array reductions if the array section base
is a pointer, we don't really need the pointer to be shared (and don't actually
check that, unlike e.g. when the array section is array based), it is enough if
what the points to is shared.

Reply via email to