blob: fd03a9ab0ffede690efd8b928e241e302dac3aa9 [file] [log] [blame]
Alexey Bataevdb390212015-05-20 04:24:19 +00001// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
2// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
3// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
Alexey Bataev4d1dfea2014-07-18 09:11:51 +00004// expected-no-diagnostics
5
6#ifndef HEADER
7#define HEADER
8
9void foo() {}
10
11template <class T>
12T tmain(T argc) {
13 static T a;
14#pragma omp barrier
Alexey Bataevc4fad652016-01-13 11:18:54 +000015 switch (argc) {
16 case 0:
17#pragma omp barrier
18 break;
19 default:
20#pragma omp barrier
21#pragma omp barrier
22 break;
23 }
Alexey Bataev4d1dfea2014-07-18 09:11:51 +000024 return a + argc;
25}
Serge Pavlova67a4d22016-11-10 08:49:37 +000026// CHECK: static T a;
27// CHECK-NEXT: #pragma omp barrier
Alexey Bataev4d1dfea2014-07-18 09:11:51 +000028// CHECK: static int a;
29// CHECK-NEXT: #pragma omp barrier
30// CHECK: static char a;
31// CHECK-NEXT: #pragma omp barrier
Alexey Bataevc4fad652016-01-13 11:18:54 +000032// CHECK-NEXT: switch (argc) {
33// CHECK-NEXT: case 0:
34// CHECK-NEXT: #pragma omp barrier
35// CHECK-NEXT: break;
36// CHECK-NEXT: default:
37// CHECK-NEXT: #pragma omp barrier
38// CHECK-NEXT: #pragma omp barrier
39// CHECK-NEXT: break;
40// CHECK-NEXT: }
Alexey Bataev4d1dfea2014-07-18 09:11:51 +000041
42int main(int argc, char **argv) {
43 static int a;
44// CHECK: static int a;
45#pragma omp barrier
46 // CHECK-NEXT: #pragma omp barrier
Alexey Bataevc4fad652016-01-13 11:18:54 +000047 switch (argc) {
48 case 0:
49#pragma omp barrier
50#pragma omp barrier
51 break;
52 default:
53#pragma omp barrier
54 break;
55 }
56// CHECK-NEXT: switch (argc) {
57// CHECK-NEXT: case 0:
58// CHECK-NEXT: #pragma omp barrier
59// CHECK-NEXT: #pragma omp barrier
60// CHECK-NEXT: break;
61// CHECK-NEXT: default:
62// CHECK-NEXT: #pragma omp barrier
63// CHECK-NEXT: break;
64// CHECK-NEXT: }
Alexey Bataev4d1dfea2014-07-18 09:11:51 +000065 return tmain(argc) + tmain(argv[0][0]) + a;
66}
67
68#endif