1 // RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s 2 3 // FIXME: A bug in ParsedAttributes causes the order of the attributes to be 4 // reversed. The checks are consequently in the reverse order below. 5 6 // CHECK: #pragma clang loop interleave_count(8) 7 // CHECK-NEXT: #pragma clang loop vectorize_width(4) 8 9 void test(int *List, int Length) { 10 int i = 0; 11 #pragma clang loop vectorize_width(4) 12 #pragma clang loop interleave_count(8) 13 // CHECK-NEXT: while (i < Length) 14 while (i < Length) { 15 List[i] = i * 2; 16 i++; 17 } 18 19 // CHECK: #pragma clang loop interleave(disable) 20 // CHECK-NEXT: #pragma clang loop vectorize(enable) 21 22 #pragma clang loop vectorize(enable) 23 #pragma clang loop interleave(disable) 24 // CHECK-NEXT: while (i - 1 < Length) 25 while (i - 1 < Length) { 26 List[i] = i * 2; 27 i++; 28 } 29 30 // CHECK: #pragma clang loop interleave(enable) 31 // CHECK-NEXT: #pragma clang loop vectorize(disable) 32 33 #pragma clang loop vectorize(disable) 34 #pragma clang loop interleave(enable) 35 // CHECK-NEXT: while (i - 2 < Length) 36 while (i - 2 < Length) { 37 List[i] = i * 2; 38 i++; 39 } 40 } 41