mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 19:45:40 -04:00

Summary: Added basic analysis of map clauses. Only map clauses with to and tofrom map type must be analyzed since all other map types (alloc, delete, etc.) do not require to use the value of the initial variable, instead they create the new copy of the variable. Reviewers: NoQ Subscribers: guansong, cfe-commits, kkwli0, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D66668 llvm-svn: 370214
40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 -o - %s -Wuninitialized
|
|
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized
|
|
|
|
void foo() { }
|
|
|
|
void xxx(int argc) {
|
|
int map; // expected-note {{initialize the variable 'map' to silence this warning}}
|
|
#pragma omp target data map(map) // expected-warning {{variable 'map' is uninitialized when used here}}
|
|
for (int i = 0; i < 10; ++i)
|
|
;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
int a;
|
|
#pragma omp target data // expected-error {{expected at least one 'map' or 'use_device_ptr' clause for '#pragma omp target data'}}
|
|
{}
|
|
L1:
|
|
foo();
|
|
#pragma omp target data map(a) allocate(a) // expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp target data'}}
|
|
{
|
|
foo();
|
|
goto L1; // expected-error {{use of undeclared label 'L1'}}
|
|
}
|
|
goto L2; // expected-error {{use of undeclared label 'L2'}}
|
|
#pragma omp target data map(a)
|
|
L2:
|
|
foo();
|
|
|
|
#pragma omp target data map(a)(i) // expected-warning {{extra tokens at the end of '#pragma omp target data' are ignored}}
|
|
{
|
|
foo();
|
|
}
|
|
#pragma omp target unknown // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
|
|
{
|
|
foo();
|
|
}
|
|
return 0;
|
|
}
|