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(4) num_threads(1) 12 for (int i = 0; i < 3; ++i) 13 #pragma omp interchange 14 for (int j = 0; j < 3; ++j) 15 for (int k = 0; k < 3; ++k) 16 for (int l = 0; l < 3; ++l) 17 printf("i=%d j=%d k=%d l=%d\n", i, j, k, l); 18 printf("done\n"); 19 return EXIT_SUCCESS; 20 } 21 22 #endif /* HEADER */ 23 24 // CHECK: do 25 // CHECK-NEXT: i=0 j=0 k=0 l=0 26 // CHECK-NEXT: i=0 j=0 k=0 l=1 27 // CHECK-NEXT: i=0 j=0 k=0 l=2 28 // CHECK-NEXT: i=0 j=1 k=0 l=0 29 // CHECK-NEXT: i=0 j=1 k=0 l=1 30 // CHECK-NEXT: i=0 j=1 k=0 l=2 31 // CHECK-NEXT: i=0 j=2 k=0 l=0 32 // CHECK-NEXT: i=0 j=2 k=0 l=1 33 // CHECK-NEXT: i=0 j=2 k=0 l=2 34 // CHECK-NEXT: i=0 j=0 k=1 l=0 35 // CHECK-NEXT: i=0 j=0 k=1 l=1 36 // CHECK-NEXT: i=0 j=0 k=1 l=2 37 // CHECK-NEXT: i=0 j=1 k=1 l=0 38 // CHECK-NEXT: i=0 j=1 k=1 l=1 39 // CHECK-NEXT: i=0 j=1 k=1 l=2 40 // CHECK-NEXT: i=0 j=2 k=1 l=0 41 // CHECK-NEXT: i=0 j=2 k=1 l=1 42 // CHECK-NEXT: i=0 j=2 k=1 l=2 43 // CHECK-NEXT: i=0 j=0 k=2 l=0 44 // CHECK-NEXT: i=0 j=0 k=2 l=1 45 // CHECK-NEXT: i=0 j=0 k=2 l=2 46 // CHECK-NEXT: i=0 j=1 k=2 l=0 47 // CHECK-NEXT: i=0 j=1 k=2 l=1 48 // CHECK-NEXT: i=0 j=1 k=2 l=2 49 // CHECK-NEXT: i=0 j=2 k=2 l=0 50 // CHECK-NEXT: i=0 j=2 k=2 l=1 51 // CHECK-NEXT: i=0 j=2 k=2 l=2 52 // CHECK-NEXT: i=1 j=0 k=0 l=0 53 // CHECK-NEXT: i=1 j=0 k=0 l=1 54 // CHECK-NEXT: i=1 j=0 k=0 l=2 55 // CHECK-NEXT: i=1 j=1 k=0 l=0 56 // CHECK-NEXT: i=1 j=1 k=0 l=1 57 // CHECK-NEXT: i=1 j=1 k=0 l=2 58 // CHECK-NEXT: i=1 j=2 k=0 l=0 59 // CHECK-NEXT: i=1 j=2 k=0 l=1 60 // CHECK-NEXT: i=1 j=2 k=0 l=2 61 // CHECK-NEXT: i=1 j=0 k=1 l=0 62 // CHECK-NEXT: i=1 j=0 k=1 l=1 63 // CHECK-NEXT: i=1 j=0 k=1 l=2 64 // CHECK-NEXT: i=1 j=1 k=1 l=0 65 // CHECK-NEXT: i=1 j=1 k=1 l=1 66 // CHECK-NEXT: i=1 j=1 k=1 l=2 67 // CHECK-NEXT: i=1 j=2 k=1 l=0 68 // CHECK-NEXT: i=1 j=2 k=1 l=1 69 // CHECK-NEXT: i=1 j=2 k=1 l=2 70 // CHECK-NEXT: i=1 j=0 k=2 l=0 71 // CHECK-NEXT: i=1 j=0 k=2 l=1 72 // CHECK-NEXT: i=1 j=0 k=2 l=2 73 // CHECK-NEXT: i=1 j=1 k=2 l=0 74 // CHECK-NEXT: i=1 j=1 k=2 l=1 75 // CHECK-NEXT: i=1 j=1 k=2 l=2 76 // CHECK-NEXT: i=1 j=2 k=2 l=0 77 // CHECK-NEXT: i=1 j=2 k=2 l=1 78 // CHECK-NEXT: i=1 j=2 k=2 l=2 79 // CHECK-NEXT: i=2 j=0 k=0 l=0 80 // CHECK-NEXT: i=2 j=0 k=0 l=1 81 // CHECK-NEXT: i=2 j=0 k=0 l=2 82 // CHECK-NEXT: i=2 j=1 k=0 l=0 83 // CHECK-NEXT: i=2 j=1 k=0 l=1 84 // CHECK-NEXT: i=2 j=1 k=0 l=2 85 // CHECK-NEXT: i=2 j=2 k=0 l=0 86 // CHECK-NEXT: i=2 j=2 k=0 l=1 87 // CHECK-NEXT: i=2 j=2 k=0 l=2 88 // CHECK-NEXT: i=2 j=0 k=1 l=0 89 // CHECK-NEXT: i=2 j=0 k=1 l=1 90 // CHECK-NEXT: i=2 j=0 k=1 l=2 91 // CHECK-NEXT: i=2 j=1 k=1 l=0 92 // CHECK-NEXT: i=2 j=1 k=1 l=1 93 // CHECK-NEXT: i=2 j=1 k=1 l=2 94 // CHECK-NEXT: i=2 j=2 k=1 l=0 95 // CHECK-NEXT: i=2 j=2 k=1 l=1 96 // CHECK-NEXT: i=2 j=2 k=1 l=2 97 // CHECK-NEXT: i=2 j=0 k=2 l=0 98 // CHECK-NEXT: i=2 j=0 k=2 l=1 99 // CHECK-NEXT: i=2 j=0 k=2 l=2 100 // CHECK-NEXT: i=2 j=1 k=2 l=0 101 // CHECK-NEXT: i=2 j=1 k=2 l=1 102 // CHECK-NEXT: i=2 j=1 k=2 l=2 103 // CHECK-NEXT: i=2 j=2 k=2 l=0 104 // CHECK-NEXT: i=2 j=2 k=2 l=1 105 // CHECK-NEXT: i=2 j=2 k=2 l=2 106 // CHECK-NEXT: done 107