mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 15:26:06 +00:00

According to the OpenMP standard, In a task generating construct, if no default clause is present, a variable for which the data-sharing attribute is not determined by the rules above is firstprivatized. Compiler tries to implement this, but if the variable is not directly used in the task context, this variable may not be firstprivatized. Patch fixes this problem. llvm-svn: 345277
42 lines
1.5 KiB
C++
42 lines
1.5 KiB
C++
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s
|
|
|
|
// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -o - %s
|
|
|
|
void foo();
|
|
|
|
int main(int argc, char **argv) {
|
|
#pragma omp parallel sections default // expected-error {{expected '(' after 'default'}}
|
|
{
|
|
#pragma omp parallel sections default( // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
|
|
{
|
|
#pragma omp parallel sections default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}}
|
|
{
|
|
#pragma omp parallel sections default(none // expected-error {{expected ')'}} expected-note {{to match this '('}}
|
|
{
|
|
#pragma omp parallel sections default(shared), default(shared) // expected-error {{directive '#pragma omp parallel sections' cannot contain more than one 'default' clause}}
|
|
{
|
|
#pragma omp parallel sections default(x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}}
|
|
{
|
|
foo();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#pragma omp parallel sections default(none)
|
|
{
|
|
++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}
|
|
}
|
|
|
|
#pragma omp parallel sections default(none)
|
|
{
|
|
#pragma omp parallel sections default(shared)
|
|
{
|
|
++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|