1 // RUN: %clang_cc1 -fopenmp -x c++ -triple x86_64-unknown-unknown -emit-llvm -fexceptions -fcxx-exceptions -o - %s | FileCheck %s 2 3 int main() { 4 // CHECK: @__kmpc_for_static_init 5 // CHECK-NOT: !llvm.mem.parallel_loop_access 6 // CHECK: @__kmpc_for_static_fini 7 #pragma omp for 8 for(int i = 0; i < 10; ++i); 9 // CHECK: @__kmpc_for_static_init 10 // CHECK-NOT: !llvm.mem.parallel_loop_access 11 // CHECK: @__kmpc_for_static_fini 12 #pragma omp for simd 13 for(int i = 0; i < 10; ++i); 14 // CHECK: @__kmpc_for_static_init 15 // CHECK-NOT: !llvm.mem.parallel_loop_access 16 // CHECK: @__kmpc_for_static_fini 17 #pragma omp for schedule(static) 18 for(int i = 0; i < 10; ++i); 19 // CHECK: @__kmpc_for_static_init 20 // CHECK-NOT: !llvm.mem.parallel_loop_access 21 // CHECK: @__kmpc_for_static_fini 22 #pragma omp for simd schedule(static) 23 for(int i = 0; i < 10; ++i); 24 // CHECK: @__kmpc_for_static_init 25 // CHECK-NOT: !llvm.mem.parallel_loop_access 26 // CHECK: @__kmpc_for_static_fini 27 #pragma omp for schedule(static, 2) 28 for(int i = 0; i < 10; ++i); 29 // CHECK: @__kmpc_for_static_init 30 // CHECK-NOT: !llvm.mem.parallel_loop_access 31 // CHECK: @__kmpc_for_static_fini 32 #pragma omp for simd schedule(static, 2) 33 for(int i = 0; i < 10; ++i); 34 // CHECK: @__kmpc_dispatch_init 35 // CHECK: !llvm.mem.parallel_loop_access 36 #pragma omp for schedule(auto) 37 for(int i = 0; i < 10; ++i); 38 // CHECK: @__kmpc_dispatch_init 39 // CHECK: !llvm.mem.parallel_loop_access 40 #pragma omp for simd schedule(auto) 41 for(int i = 0; i < 10; ++i); 42 // CHECK: @__kmpc_dispatch_init 43 // CHECK: !llvm.mem.parallel_loop_access 44 #pragma omp for schedule(runtime) 45 for(int i = 0; i < 10; ++i); 46 // CHECK: @__kmpc_dispatch_init 47 // CHECK: !llvm.mem.parallel_loop_access 48 #pragma omp for simd schedule(runtime) 49 for(int i = 0; i < 10; ++i); 50 // CHECK: @__kmpc_dispatch_init 51 // CHECK: !llvm.mem.parallel_loop_access 52 #pragma omp for schedule(guided) 53 for(int i = 0; i < 10; ++i); 54 // CHECK: @__kmpc_dispatch_init 55 // CHECK: !llvm.mem.parallel_loop_access 56 #pragma omp for simd schedule(guided) 57 for(int i = 0; i < 10; ++i); 58 // CHECK: @__kmpc_dispatch_init 59 // CHECK: !llvm.mem.parallel_loop_access 60 #pragma omp for schedule(dynamic) 61 for(int i = 0; i < 10; ++i); 62 // CHECK: @__kmpc_dispatch_init 63 // CHECK: !llvm.mem.parallel_loop_access 64 #pragma omp for simd schedule(dynamic) 65 for(int i = 0; i < 10; ++i); 66 // CHECK: @__kmpc_for_static_init 67 // CHECK-NOT: !llvm.mem.parallel_loop_access 68 // CHECK: @__kmpc_for_static_fini 69 #pragma omp for schedule(monotonic: static) 70 for(int i = 0; i < 10; ++i); 71 // CHECK: @__kmpc_for_static_init 72 // CHECK-NOT: !llvm.mem.parallel_loop_access 73 // CHECK: @__kmpc_for_static_fini 74 #pragma omp for simd schedule(monotonic: static) 75 for(int i = 0; i < 10; ++i); 76 // CHECK: @__kmpc_for_static_init 77 // CHECK-NOT: !llvm.mem.parallel_loop_access 78 // CHECK: @__kmpc_for_static_fini 79 #pragma omp for schedule(monotonic: static, 2) 80 for(int i = 0; i < 10; ++i); 81 // CHECK: @__kmpc_for_static_init 82 // CHECK-NOT: !llvm.mem.parallel_loop_access 83 // CHECK: @__kmpc_for_static_fini 84 #pragma omp for simd schedule(monotonic: static, 2) 85 for(int i = 0; i < 10; ++i); 86 // CHECK: @__kmpc_dispatch_init 87 // CHECK-NOT: !llvm.mem.parallel_loop_access 88 #pragma omp for schedule(monotonic: auto) 89 for(int i = 0; i < 10; ++i); 90 // CHECK: @__kmpc_dispatch_init 91 // CHECK-NOT: !llvm.mem.parallel_loop_access 92 #pragma omp for simd schedule(monotonic: auto) 93 for(int i = 0; i < 10; ++i); 94 // CHECK: @__kmpc_dispatch_init 95 // CHECK-NOT: !llvm.mem.parallel_loop_access 96 #pragma omp for schedule(monotonic: runtime) 97 for(int i = 0; i < 10; ++i); 98 // CHECK: @__kmpc_dispatch_init 99 // CHECK-NOT: !llvm.mem.parallel_loop_access 100 #pragma omp for simd schedule(monotonic: runtime) 101 for(int i = 0; i < 10; ++i); 102 // CHECK: @__kmpc_dispatch_init 103 // CHECK-NOT: !llvm.mem.parallel_loop_access 104 #pragma omp for schedule(monotonic: guided) 105 for(int i = 0; i < 10; ++i); 106 // CHECK: @__kmpc_dispatch_init 107 // CHECK-NOT: !llvm.mem.parallel_loop_access 108 #pragma omp for simd schedule(monotonic: guided) 109 for(int i = 0; i < 10; ++i); 110 // CHECK: @__kmpc_dispatch_init 111 // CHECK-NOT: !llvm.mem.parallel_loop_access 112 #pragma omp for schedule(monotonic: dynamic) 113 for(int i = 0; i < 10; ++i); 114 // CHECK: @__kmpc_dispatch_init 115 // CHECK-NOT: !llvm.mem.parallel_loop_access 116 #pragma omp for simd schedule(monotonic: dynamic) 117 for(int i = 0; i < 10; ++i); 118 // CHECK: @__kmpc_dispatch_init 119 // CHECK: !llvm.mem.parallel_loop_access 120 #pragma omp for schedule(nonmonotonic: guided) 121 for(int i = 0; i < 10; ++i); 122 // CHECK: @__kmpc_dispatch_init 123 // CHECK: !llvm.mem.parallel_loop_access 124 #pragma omp for simd schedule(nonmonotonic: guided) 125 for(int i = 0; i < 10; ++i); 126 // CHECK: @__kmpc_dispatch_init 127 // CHECK: !llvm.mem.parallel_loop_access 128 #pragma omp for schedule(nonmonotonic: dynamic) 129 for(int i = 0; i < 10; ++i); 130 // CHECK: @__kmpc_dispatch_init 131 // CHECK: !llvm.mem.parallel_loop_access 132 #pragma omp for simd schedule(nonmonotonic: dynamic) 133 for(int i = 0; i < 10; ++i); 134 // CHECK: @__kmpc_dispatch_init 135 // CHECK-NOT: !llvm.mem.parallel_loop_access 136 // CHECK: @__kmpc_dispatch_next 137 #pragma omp for schedule(static) ordered 138 for(int i = 0; i < 10; ++i); 139 // CHECK: @__kmpc_dispatch_init 140 // CHECK-NOT: !llvm.mem.parallel_loop_access 141 // CHECK: @__kmpc_dispatch_next 142 #pragma omp for simd schedule(static) ordered 143 for(int i = 0; i < 10; ++i); 144 // CHECK: @__kmpc_dispatch_init 145 // CHECK-NOT: !llvm.mem.parallel_loop_access 146 // CHECK: @__kmpc_dispatch_next 147 #pragma omp for schedule(static, 2) ordered(1) 148 for(int i = 0; i < 10; ++i); 149 // CHECK: @__kmpc_dispatch_init 150 // CHECK-NOT: !llvm.mem.parallel_loop_access 151 // CHECK: @__kmpc_dispatch_next 152 #pragma omp for simd schedule(static, 2) ordered 153 for(int i = 0; i < 10; ++i); 154 // CHECK: @__kmpc_dispatch_init 155 // CHECK-NOT: !llvm.mem.parallel_loop_access 156 // CHECK: @__kmpc_dispatch_next 157 #pragma omp for schedule(auto) ordered(1) 158 for(int i = 0; i < 10; ++i); 159 // CHECK: @__kmpc_dispatch_init 160 // CHECK-NOT: !llvm.mem.parallel_loop_access 161 #pragma omp for simd schedule(auto) ordered 162 for(int i = 0; i < 10; ++i); 163 // CHECK: @__kmpc_dispatch_init 164 // CHECK-NOT: !llvm.mem.parallel_loop_access 165 // CHECK: @__kmpc_dispatch_next 166 #pragma omp for schedule(runtime) ordered 167 for(int i = 0; i < 10; ++i); 168 // CHECK: @__kmpc_dispatch_init 169 // CHECK-NOT: !llvm.mem.parallel_loop_access 170 // CHECK: @__kmpc_dispatch_next 171 #pragma omp for simd schedule(runtime) ordered 172 for(int i = 0; i < 10; ++i); 173 // CHECK: @__kmpc_dispatch_init 174 // CHECK-NOT: !llvm.mem.parallel_loop_access 175 // CHECK: @__kmpc_dispatch_next 176 #pragma omp for schedule(guided) ordered(1) 177 for(int i = 0; i < 10; ++i); 178 // CHECK: @__kmpc_dispatch_init 179 // CHECK-NOT: !llvm.mem.parallel_loop_access 180 // CHECK: @__kmpc_dispatch_next 181 #pragma omp for simd schedule(guided) ordered 182 for(int i = 0; i < 10; ++i); 183 // CHECK: @__kmpc_dispatch_init 184 // CHECK-NOT: !llvm.mem.parallel_loop_access 185 // CHECK: @__kmpc_dispatch_next 186 #pragma omp for schedule(dynamic) ordered(1) 187 for(int i = 0; i < 10; ++i); 188 // CHECK: @__kmpc_dispatch_init 189 // CHECK-NOT: !llvm.mem.parallel_loop_access 190 // CHECK: @__kmpc_dispatch_next 191 #pragma omp for simd schedule(dynamic) 192 for(int i = 0; i < 10; ++i); 193 return 0; 194 } 195