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

            Bug ID: 71065
           Summary: Missing diagnostic for statements between OpenMP
                    'target' and 'teams'
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid, openmp
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amonakov at gcc dot gnu.org
  Target Milestone: ---

OpenMP 4.5 says (4.0 had a similar restriction, sans 'declarations'):

If specified, a teams construct must be contained within a target construct.
That target construct must contain no statements, declarations or directives
outside of the teams construct.

As a result GCC should reject this:

void f()
{
#pragma omp target
  {
    asm("");
#pragma omp teams
      ;
  }
}


(as I understand, 'if' clause on the 'target' pragma allows the user to run
their code in the target region prior to entering 'teams' region anyway, but
still diagnosing the above should be useful)

Reply via email to