llvm-project

Форк
0
/
parse-sub-array.cpp 
89 строк · 2.6 Кб
1
// RUN: %clang_cc1 %s -verify -fopenacc
2

3
void Func(int i, int j) {
4
  int array[5];
5
#pragma acc parallel private(array[:])
6
  while (true);
7
#pragma acc parallel private(array[i:])
8
  while (true);
9
#pragma acc parallel private(array[:j])
10
  while (true);
11
#pragma acc parallel private(array[i:j])
12
  while (true);
13
#pragma acc parallel private(array[1:2])
14
  while (true);
15

16
  // expected-error@+1{{expected unqualified-id}}
17
#pragma acc parallel private(array[::])
18
  while (true);
19
  // expected-error@+2{{expected ']'}}
20
  // expected-note@+1{{to match this '['}}
21
#pragma acc parallel private(array[1::])
22
  while (true);
23
  // expected-error@+2{{expected ']'}}
24
  // expected-note@+1{{to match this '['}}
25
#pragma acc parallel private(array[:2:])
26
  while (true);
27
  // expected-error@+3{{expected unqualified-id}}
28
  // expected-error@+2{{expected ']'}}
29
  // expected-note@+1{{to match this '['}}
30
#pragma acc parallel private(array[::3])
31
  while (true);
32
  // expected-error@+2{{expected ']'}}
33
  // expected-note@+1{{to match this '['}}
34
#pragma acc parallel private(array[1:2:3])
35
  while (true);
36
}
37

38
template<typename T, unsigned I, auto &IPtr>// #IPTR
39
void TemplFunc() {
40
  T array[I];
41
  T array2[2*I];
42
  T t; // #tDecl
43
#pragma acc parallel private(array[:])
44
  while (true);
45
#pragma acc parallel private(array[t:])
46
  while (true);
47
#pragma acc parallel private(array[I-1:])
48
  while (true);
49
#pragma acc parallel private(array[IPtr:])
50
  while (true);
51
#pragma acc parallel private(array[:t])
52
  while (true);
53
#pragma acc parallel private(array[:I])
54
  while (true);
55
#pragma acc parallel private(array[:IPtr])
56
  while (true);
57
#pragma acc parallel private(array[t:t])
58
  while (true);
59
#pragma acc parallel private(array2[I:I])
60
  while (true);
61
#pragma acc parallel private(array[IPtr:IPtr])
62
  while (true);
63

64
  // expected-error@+1{{expected unqualified-id}}
65
#pragma acc parallel private(array[::])
66
  while (true);
67
  // expected-error@+3{{'t' is not a class, namespace, or enumeration}}
68
  // expected-note@#tDecl{{'t' declared here}}
69
  // expected-error@+1{{expected unqualified-id}}
70
#pragma acc parallel private(array[t::])
71
  while (true);
72
  // expected-error@+2{{expected ']'}}
73
  // expected-note@+1{{to match this '['}}
74
#pragma acc parallel private(array[:I:])
75
  while (true);
76
  // expected-error@+2{{no member named 'IPtr' in the global namespace}}
77
  // expected-note@#IPTR{{'IPtr' declared here}}
78
#pragma acc parallel private(array[::IPtr])
79
  while (true);
80
  // expected-error@+2{{expected ']'}}
81
  // expected-note@+1{{to match this '['}}
82
#pragma acc parallel private(array[IPtr:I:t])
83
  while (true);
84
}
85

86
void use() {
87
  static constexpr int SomeI = 1;
88
  TemplFunc<int, 5, SomeI>();
89
}
90

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.