blob: 6258b3781b01a8903cf828427ae61d68fa7c7a3f [file] [log] [blame]
Reid Kleckner4173f6a2014-06-10 21:35:24 +00001// RUN: %clang_cc1 -emit-pch -o %t.a %s
2// RUN: %clang_cc1 -include-pch %t.a %s -ast-print -o - | FileCheck %s
3
4// FIXME: A bug in ParsedAttributes causes the order of the attributes to be
5// reversed. The checks are consequently in the reverse order below.
6
Eli Bendersky86483b32014-06-11 17:56:26 +00007// CHECK: #pragma clang loop unroll_count(16)
Reid Kleckner4173f6a2014-06-10 21:35:24 +00008// CHECK: #pragma clang loop interleave_count(8)
9// CHECK: #pragma clang loop vectorize_width(4)
Eli Bendersky86483b32014-06-11 17:56:26 +000010// CHECK: #pragma clang loop unroll(disable)
Reid Kleckner4173f6a2014-06-10 21:35:24 +000011// CHECK: #pragma clang loop interleave(disable)
12// CHECK: #pragma clang loop vectorize(enable)
Eli Bendersky86483b32014-06-11 17:56:26 +000013// CHECK: #pragma clang loop unroll(enable)
Reid Kleckner4173f6a2014-06-10 21:35:24 +000014// CHECK: #pragma clang loop interleave(enable)
15// CHECK: #pragma clang loop vectorize(disable)
16
17#ifndef HEADER
18#define HEADER
19
20class pragma_test {
21public:
22 inline void run1(int *List, int Length) {
23 int i = 0;
24#pragma clang loop vectorize_width(4)
25#pragma clang loop interleave_count(8)
Eli Bendersky86483b32014-06-11 17:56:26 +000026#pragma clang loop unroll_count(16)
Reid Kleckner4173f6a2014-06-10 21:35:24 +000027 while (i < Length) {
28 List[i] = i;
29 i++;
30 }
31 }
32
33 inline void run2(int *List, int Length) {
34 int i = 0;
35#pragma clang loop vectorize(enable)
36#pragma clang loop interleave(disable)
Eli Bendersky86483b32014-06-11 17:56:26 +000037#pragma clang loop unroll(disable)
Reid Kleckner4173f6a2014-06-10 21:35:24 +000038 while (i - 1 < Length) {
39 List[i] = i;
40 i++;
41 }
42 }
43
44 inline void run3(int *List, int Length) {
45 int i = 0;
46#pragma clang loop vectorize(disable)
47#pragma clang loop interleave(enable)
Eli Bendersky86483b32014-06-11 17:56:26 +000048#pragma clang loop unroll(enable)
Reid Kleckner4173f6a2014-06-10 21:35:24 +000049 while (i - 3 < Length) {
50 List[i] = i;
51 i++;
52 }
53 }
54};
55
56#else
57
58void test() {
59 int List[100];
60
61 pragma_test pt;
62
63 pt.run1(List, 100);
64 pt.run2(List, 100);
65 pt.run3(List, 100);
66}
67
68#endif