mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 23:51:56 +00:00
[OpenMP] Parsing + Sema for nowait clause on target directive
Summary: Allow nowait clause on target directive in sema and add test cases. Reviewers: ABataev Differential Revision: http://reviews.llvm.org/D16358 llvm-svn: 258441
This commit is contained in:
parent
5ba1c127fc
commit
bfc33d0f3a
@ -355,6 +355,7 @@ OPENMP_TARGET_CLAUSE(if)
|
||||
OPENMP_TARGET_CLAUSE(device)
|
||||
OPENMP_TARGET_CLAUSE(map)
|
||||
OPENMP_TARGET_CLAUSE(private)
|
||||
OPENMP_TARGET_CLAUSE(nowait)
|
||||
|
||||
// Clauses allowed for OpenMP directive 'target data'.
|
||||
// TODO More clauses for 'target data' directive.
|
||||
|
@ -25,6 +25,8 @@ T tmain(T argc, T *argv) {
|
||||
foo();
|
||||
#pragma omp target map(always,alloc: i)
|
||||
foo();
|
||||
#pragma omp target nowait
|
||||
foo();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -44,6 +46,8 @@ T tmain(T argc, T *argv) {
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target map(always,alloc: i)
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target nowait
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK: template <typename T = char, int C = 1> char tmain(char argc, char *argv) {
|
||||
// CHECK-NEXT: char i, j, a[20]
|
||||
// CHECK-NEXT: #pragma omp target
|
||||
@ -60,6 +64,8 @@ T tmain(T argc, T *argv) {
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target map(always,alloc: i)
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target nowait
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK: template <typename T, int C> T tmain(T argc, T *argv) {
|
||||
// CHECK-NEXT: T i, j, a[20]
|
||||
// CHECK-NEXT: #pragma omp target
|
||||
@ -76,6 +82,8 @@ T tmain(T argc, T *argv) {
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target map(always,alloc: i)
|
||||
// CHECK-NEXT: foo()
|
||||
// CHECK-NEXT: #pragma omp target nowait
|
||||
// CHECK-NEXT: foo()
|
||||
|
||||
// CHECK-LABEL: int main(int argc, char **argv) {
|
||||
int main (int argc, char **argv) {
|
||||
@ -115,6 +123,11 @@ int main (int argc, char **argv) {
|
||||
foo();
|
||||
// CHECK-NEXT: foo();
|
||||
|
||||
#pragma omp target nowait
|
||||
// CHECK-NEXT: #pragma omp target nowait
|
||||
foo();
|
||||
// CHECK-NEXT: foo();
|
||||
|
||||
return tmain<int, 5>(argc, &argc) + tmain<char, 1>(argv[0][0], argv[0]);
|
||||
}
|
||||
|
||||
|
17
clang/test/OpenMP/target_nowait_messages.cpp
Normal file
17
clang/test/OpenMP/target_nowait_messages.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 -o - %s
|
||||
|
||||
void foo() {
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
#pragma omp target nowait( // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
|
||||
foo();
|
||||
#pragma omp target nowait (argc)) // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
|
||||
foo();
|
||||
#pragma omp target nowait device (-10u)
|
||||
foo();
|
||||
#pragma omp target nowait (3.14) device (-10u) // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
|
||||
foo();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user