diff options
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/OpenMP/requires_unified_address_ast_print.cpp | 16 | ||||
| -rw-r--r-- | clang/test/OpenMP/requires_unified_address_messages.cpp | 36 |
2 files changed, 52 insertions, 0 deletions
diff --git a/clang/test/OpenMP/requires_unified_address_ast_print.cpp b/clang/test/OpenMP/requires_unified_address_ast_print.cpp new file mode 100644 index 00000000000..641d6c4b90b --- /dev/null +++ b/clang/test/OpenMP/requires_unified_address_ast_print.cpp @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s +// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s + +// RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s +// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s +// expected-no-diagnostics + +#ifndef HEADER +#define HEADER + +#pragma omp requires unified_address +// CHECK:#pragma omp requires unified_address + +#endif diff --git a/clang/test/OpenMP/requires_unified_address_messages.cpp b/clang/test/OpenMP/requires_unified_address_messages.cpp new file mode 100644 index 00000000000..ed5d27a5ec9 --- /dev/null +++ b/clang/test/OpenMP/requires_unified_address_messages.cpp @@ -0,0 +1,36 @@ +// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s + +#pragma omp requires unified_address // expected-note {{unified_address clause previously used here}} expected-note {{unified_address clause previously used here}} expected-note {{unified_address clause previously used here}} expected-note {{unified_address clause previously used here}} expected-note {{unified_address clause previously used here}} + +#pragma omp requires unified_address // expected-error {{Only one unified_address clause can appear on a requires directive in a single translation unit}} + +#pragma omp requires unified_address, unified_address // expected-error {{Only one unified_address clause can appear on a requires directive in a single translation unit}} expected-error {{directive '#pragma omp requires' cannot contain more than one 'unified_address' clause}} + +#pragma omp requires // expected-error {{expected at least one clause on '#pragma omp requires' directive}} + +#pragma omp requires invalid_clause // expected-warning {{extra tokens at the end of '#pragma omp requires' are ignored}} expected-error {{expected at least one clause on '#pragma omp requires' directive}} + +#pragma omp requires nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp requires'}} expected-error {{expected at least one clause on '#pragma omp requires' directive}} + +#pragma omp requires unified_address, invalid_clause // expected-warning {{extra tokens at the end of '#pragma omp requires' are ignored}} expected-error {{Only one unified_address clause can appear on a requires directive in a single translation unit}} + +#pragma omp requires invalid_clause unified_address // expected-warning {{extra tokens at the end of '#pragma omp requires' are ignored}} expected-error {{expected at least one clause on '#pragma omp requires' directive}} + +namespace A { + #pragma omp requires unified_address // expected-error {{Only one unified_address clause can appear on a requires directive in a single translation unit}} + namespace B { + #pragma omp requires unified_address // expected-error {{Only one unified_address clause can appear on a requires directive in a single translation unit}} + } +} + +template <typename T> T foo() { + #pragma omp requires unified_address // expected-error {{unexpected OpenMP directive '#pragma omp requires'}} +} + +class C { + #pragma omp requires unified_address // expected-error {{'#pragma omp requires' directive must appear only in file scope}} +}; + +int main() { + #pragma omp requires unified_address // expected-error {{unexpected OpenMP directive '#pragma omp requires'}} +} |

