1 // RUN: %libomp-cxx-compile-and-run | FileCheck %s --match-full-lines 2 3 #ifndef HEADER 4 #define HEADER 5 6 #include <cstdlib> 7 #include <cstdio> 8 9 int main() { 10 printf("do\n"); 11 #pragma omp parallel for collapse(3) num_threads(1) 12 for (int i = 0; i < 3; ++i) 13 #pragma omp reverse 14 for (int j = 0; j < 3; ++j) 15 for (int k = 0; k < 3; ++k) 16 printf("i=%d j=%d k=%d\n", i, j, k); 17 printf("done\n"); 18 return EXIT_SUCCESS; 19 } 20 21 #endif /* HEADER */ 22 23 // CHECK: do 24 // CHECK-NEXT: i=0 j=2 k=0 25 // CHECK-NEXT: i=0 j=2 k=1 26 // CHECK-NEXT: i=0 j=2 k=2 27 // CHECK-NEXT: i=0 j=1 k=0 28 // CHECK-NEXT: i=0 j=1 k=1 29 // CHECK-NEXT: i=0 j=1 k=2 30 // CHECK-NEXT: i=0 j=0 k=0 31 // CHECK-NEXT: i=0 j=0 k=1 32 // CHECK-NEXT: i=0 j=0 k=2 33 // CHECK-NEXT: i=1 j=2 k=0 34 // CHECK-NEXT: i=1 j=2 k=1 35 // CHECK-NEXT: i=1 j=2 k=2 36 // CHECK-NEXT: i=1 j=1 k=0 37 // CHECK-NEXT: i=1 j=1 k=1 38 // CHECK-NEXT: i=1 j=1 k=2 39 // CHECK-NEXT: i=1 j=0 k=0 40 // CHECK-NEXT: i=1 j=0 k=1 41 // CHECK-NEXT: i=1 j=0 k=2 42 // CHECK-NEXT: i=2 j=2 k=0 43 // CHECK-NEXT: i=2 j=2 k=1 44 // CHECK-NEXT: i=2 j=2 k=2 45 // CHECK-NEXT: i=2 j=1 k=0 46 // CHECK-NEXT: i=2 j=1 k=1 47 // CHECK-NEXT: i=2 j=1 k=2 48 // CHECK-NEXT: i=2 j=0 k=0 49 // CHECK-NEXT: i=2 j=0 k=1 50 // CHECK-NEXT: i=2 j=0 k=2 51 // CHECK-NEXT: done 52