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

            Bug ID: 81887
           Summary: pragma omp ordered simd ignored under -fopenmp-simd
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: openmp, wrong-code
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amonakov at gcc dot gnu.org
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

Under -fopenmp-simd, OpenMP pragma 'ordered' is not added to IR, but it should
be.

void f(int *out)
{
#pragma omp simd
  for (int i = 0; i < 100; i++)
#pragma omp ordered simd
    out[i/2] = i;
}

$ gcc/cc1 -O2 -fopenmp-simd -fdump-tree-gimple t.c
$ cat t.c.004t.gimple

void f(int*) (int * out)
{
  {
    int i;

    #pragma omp simd linear(i:1)
    for (i = 0; i < 100; i = i + 1)
      {
        _1 = i / 2;
        _2 = (long unsigned int) _1;
        _3 = _2 * 4;
        _4 = out + _3;
        *_4 = i;
      }
  }
}

Reply via email to