Skip to content

Commit 4ae5759

Browse files
committed
Rebased
1 parent dd11823 commit 4ae5759

File tree

3 files changed

+121
-130
lines changed

3 files changed

+121
-130
lines changed

clang/test/OpenMP/reduction_complex.c

Lines changed: 75 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ int foo() {
171171
// CHECK: omp.inner.for.end: ; preds = %[[VAL_55]]
172172
// CHECK-NEXT: br label %[[VAL_91:.*]]
173173
// CHECK: omp.loop.exit: ; preds = %[[VAL_60]]
174-
// CHECK-NEXT: call void @__kmpc_for_static_fini(ptr @3, i32 %[[VAL_45]])
174+
// CHECK-NEXT: call void @__kmpc_distribute_static_fini(ptr @2, i32 %[[VAL_45]])
175175
// CHECK-NEXT: %[[VAL_92:.*]] = load i32, ptr %[[VAL_29]], align 4
176176
// CHECK-NEXT: %[[VAL_93:.*]] = icmp ne i32 %[[VAL_92]], 0
177177
// CHECK-NEXT: br i1 %[[VAL_93]], label %[[VAL_94:.*]], label %[[VAL_95:.*]]
@@ -500,7 +500,7 @@ int foo() {
500500
// CHECK1: omp.inner.for.end: ; preds = %[[VAL_87]]
501501
// CHECK1-NEXT: br label %[[VAL_103:.*]]
502502
// CHECK1: omp.loop.exit: ; preds = %[[VAL_93]]
503-
// CHECK1-NEXT: call void @__kmpc_for_static_fini(ptr @2, i32 %[[VAL_77]])
503+
// CHECK1-NEXT: call void @__kmpc_for_static_fini(ptr @1, i32 %[[VAL_77]])
504504
// CHECK1-NEXT: %[[VAL_104:.*]] = load i32, ptr %[[VAL_60]], align 4
505505
// CHECK1-NEXT: %[[VAL_105:.*]] = icmp ne i32 %[[VAL_104]], 0
506506
// CHECK1-NEXT: br i1 %[[VAL_105]], label %[[VAL_106:.*]], label %[[VAL_107:.*]]
@@ -764,7 +764,7 @@ int foo() {
764764
// CHECK2: omp.inner.for.end: ; preds = %[[VAL_87]]
765765
// CHECK2-NEXT: br label %[[VAL_101:.*]]
766766
// CHECK2: omp.loop.exit: ; preds = %[[VAL_93]]
767-
// CHECK2-NEXT: call void @__kmpc_for_static_fini(ptr @2, i32 %[[VAL_77]])
767+
// CHECK2-NEXT: call void @__kmpc_for_static_fini(ptr @1, i32 %[[VAL_77]])
768768
// CHECK2-NEXT: %[[VAL_102:.*]] = load i32, ptr %[[VAL_60]], align 4
769769
// CHECK2-NEXT: %[[VAL_103:.*]] = icmp ne i32 %[[VAL_102]], 0
770770
// CHECK2-NEXT: br i1 %[[VAL_103]], label %[[VAL_104:.*]], label %[[VAL_105:.*]]
@@ -923,92 +923,91 @@ int foo() {
923923
// CHECK2-NEXT: %[[VAL_214:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
924924
// CHECK2-NEXT: %[[VAL_215:.*]] = load float, ptr %[[VAL_214]], align 4, !llvm.access.group !5
925925
// CHECK2-NEXT: %[[VAL_216:.*]] = fadd float %[[VAL_213]], %[[VAL_211]]
926-
// CHECK2-NEXT: %[[VAL_217:.*]] = fadd float %[[VAL_215]], 0.000000e+00
927-
// CHECK2-NEXT: %[[VAL_218:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
928-
// CHECK2-NEXT: %[[VAL_219:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
929-
// CHECK2-NEXT: store float %[[VAL_216]], ptr %[[VAL_218]], align 4, !llvm.access.group !5
930-
// CHECK2-NEXT: store float %[[VAL_217]], ptr %[[VAL_219]], align 4, !llvm.access.group !5
931-
// CHECK2-NEXT: br label %[[VAL_220:.*]]
926+
// CHECK2-NEXT: %[[VAL_217:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
927+
// CHECK2-NEXT: %[[VAL_218:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
928+
// CHECK2-NEXT: store float %[[VAL_216]], ptr %[[VAL_217]], align 4, !llvm.access.group !5
929+
// CHECK2-NEXT: store float %[[VAL_215]], ptr %[[VAL_218]], align 4, !llvm.access.group !5
930+
// CHECK2-NEXT: br label %[[VAL_219:.*]]
932931
// CHECK2: omp.body.continue: ; preds = %[[VAL_197]]
933932
// CHECK2-NEXT: br label %[[VAL_193]]
934-
// CHECK2: omp.inner.for.inc: ; preds = %[[VAL_220]]
935-
// CHECK2-NEXT: %[[VAL_221:.*]] = load i32, ptr %[[VAL_155]], align 4, !llvm.access.group !5
936-
// CHECK2-NEXT: %[[VAL_222:.*]] = add nsw i32 %[[VAL_221]], 1
937-
// CHECK2-NEXT: store i32 %[[VAL_222]], ptr %[[VAL_155]], align 4, !llvm.access.group !5
933+
// CHECK2: omp.inner.for.inc: ; preds = %[[VAL_219]]
934+
// CHECK2-NEXT: %[[VAL_220:.*]] = load i32, ptr %[[VAL_155]], align 4, !llvm.access.group !5
935+
// CHECK2-NEXT: %[[VAL_221:.*]] = add nsw i32 %[[VAL_220]], 1
936+
// CHECK2-NEXT: store i32 %[[VAL_221]], ptr %[[VAL_155]], align 4, !llvm.access.group !5
938937
// CHECK2-NEXT: br label %[[VAL_192]], !llvm.loop !6
939938
// CHECK2: omp.inner.for.end: ; preds = %[[VAL_192]]
940-
// CHECK2-NEXT: br label %[[VAL_223:.*]]
939+
// CHECK2-NEXT: br label %[[VAL_222:.*]]
941940
// CHECK2: omp.loop.exit: ; preds = %[[VAL_198]]
942941
// CHECK2-NEXT: call void @__kmpc_for_static_fini(ptr @2, i32 %[[VAL_182]])
943-
// CHECK2-NEXT: %[[VAL_224:.*]] = getelementptr inbounds [1 x ptr], ptr %[[VAL_166]], i32 0, i32 0
944-
// CHECK2-NEXT: store ptr %[[VAL_163]], ptr %[[VAL_224]], align 4
945-
// CHECK2-NEXT: %[[VAL_225:.*]] = call i32 @__kmpc_reduce(ptr @3, i32 %[[VAL_182]], i32 1, i32 4, ptr %[[VAL_166]], ptr @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3foov_l31.omp_outlined.omp_outlined.omp.reduction.reduction_func, ptr @.gomp_critical_user_.reduction.var)
946-
// CHECK2-NEXT: switch i32 %[[VAL_225]], label %[[VAL_226:.*]] [
947-
// CHECK2-NEXT: i32 1, label %[[VAL_227:.*]]
948-
// CHECK2-NEXT: i32 2, label %[[VAL_228:.*]]
942+
// CHECK2-NEXT: %[[VAL_223:.*]] = getelementptr inbounds [1 x ptr], ptr %[[VAL_166]], i32 0, i32 0
943+
// CHECK2-NEXT: store ptr %[[VAL_163]], ptr %[[VAL_223]], align 4
944+
// CHECK2-NEXT: %[[VAL_224:.*]] = call i32 @__kmpc_reduce(ptr @3, i32 %[[VAL_182]], i32 1, i32 4, ptr %[[VAL_166]], ptr @__omp_offloading_1030b_4868a89__Z3foov_l31.omp_outlined.omp_outlined.omp.reduction.reduction_func, ptr @.gomp_critical_user_.reduction.var)
945+
// CHECK2-NEXT: switch i32 %[[VAL_224]], label %[[VAL_225:.*]] [
946+
// CHECK2-NEXT: i32 1, label %[[VAL_226:.*]]
947+
// CHECK2-NEXT: i32 2, label %[[VAL_227:.*]]
949948
// CHECK2-NEXT: ]
950-
// CHECK2: .omp.reduction.case1: ; preds = %[[VAL_223]]
951-
// CHECK2-NEXT: %[[VAL_229:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 0
952-
// CHECK2-NEXT: %[[VAL_230:.*]] = load float, ptr %[[VAL_229]], align 4
953-
// CHECK2-NEXT: %[[VAL_231:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 1
954-
// CHECK2-NEXT: %[[VAL_232:.*]] = load float, ptr %[[VAL_231]], align 4
955-
// CHECK2-NEXT: %[[VAL_233:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
956-
// CHECK2-NEXT: %[[VAL_234:.*]] = load float, ptr %[[VAL_233]], align 4
957-
// CHECK2-NEXT: %[[VAL_235:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
958-
// CHECK2-NEXT: %[[VAL_236:.*]] = load float, ptr %[[VAL_235]], align 4
959-
// CHECK2-NEXT: %[[VAL_237:.*]] = fadd float %[[VAL_230]], %[[VAL_234]]
960-
// CHECK2-NEXT: %[[VAL_238:.*]] = fadd float %[[VAL_232]], %[[VAL_236]]
961-
// CHECK2-NEXT: %[[VAL_239:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 0
962-
// CHECK2-NEXT: %[[VAL_240:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 1
949+
// CHECK2: .omp.reduction.case1: ; preds = %[[VAL_222]]
950+
// CHECK2-NEXT: %[[VAL_228:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 0
951+
// CHECK2-NEXT: %[[VAL_229:.*]] = load float, ptr %[[VAL_228]], align 4
952+
// CHECK2-NEXT: %[[VAL_230:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 1
953+
// CHECK2-NEXT: %[[VAL_231:.*]] = load float, ptr %[[VAL_230]], align 4
954+
// CHECK2-NEXT: %[[VAL_232:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
955+
// CHECK2-NEXT: %[[VAL_233:.*]] = load float, ptr %[[VAL_232]], align 4
956+
// CHECK2-NEXT: %[[VAL_234:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
957+
// CHECK2-NEXT: %[[VAL_235:.*]] = load float, ptr %[[VAL_234]], align 4
958+
// CHECK2-NEXT: %[[VAL_236:.*]] = fadd float %[[VAL_229]], %[[VAL_233]]
959+
// CHECK2-NEXT: %[[VAL_237:.*]] = fadd float %[[VAL_231]], %[[VAL_235]]
960+
// CHECK2-NEXT: %[[VAL_238:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 0
961+
// CHECK2-NEXT: %[[VAL_239:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_176]], i32 0, i32 1
962+
// CHECK2-NEXT: store float %[[VAL_236]], ptr %[[VAL_238]], align 4
963963
// CHECK2-NEXT: store float %[[VAL_237]], ptr %[[VAL_239]], align 4
964-
// CHECK2-NEXT: store float %[[VAL_238]], ptr %[[VAL_240]], align 4
965964
// CHECK2-NEXT: call void @__kmpc_end_reduce(ptr @3, i32 %[[VAL_182]], ptr @.gomp_critical_user_.reduction.var)
966-
// CHECK2-NEXT: br label %[[VAL_226]]
967-
// CHECK2: .omp.reduction.case2: ; preds = %[[VAL_223]]
968-
// CHECK2-NEXT: %[[VAL_241:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
969-
// CHECK2-NEXT: %[[VAL_242:.*]] = load float, ptr %[[VAL_241]], align 4
970-
// CHECK2-NEXT: %[[VAL_243:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
971-
// CHECK2-NEXT: %[[VAL_244:.*]] = load float, ptr %[[VAL_243]], align 4
965+
// CHECK2-NEXT: br label %[[VAL_225]]
966+
// CHECK2: .omp.reduction.case2: ; preds = %[[VAL_222]]
967+
// CHECK2-NEXT: %[[VAL_240:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
968+
// CHECK2-NEXT: %[[VAL_241:.*]] = load float, ptr %[[VAL_240]], align 4
969+
// CHECK2-NEXT: %[[VAL_242:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
970+
// CHECK2-NEXT: %[[VAL_243:.*]] = load float, ptr %[[VAL_242]], align 4
972971
// CHECK2-NEXT: call void @__atomic_load(i32 noundef 8, ptr noundef %[[VAL_176]], ptr noundef %[[VAL_167]], i32 noundef 0)
973-
// CHECK2-NEXT: br label %[[VAL_245:.*]]
974-
// CHECK2: atomic_cont: ; preds = %[[VAL_245]], %[[VAL_228]]
975-
// CHECK2-NEXT: %[[VAL_246:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_167]], i32 0, i32 0
976-
// CHECK2-NEXT: %[[VAL_247:.*]] = load float, ptr %[[VAL_246]], align 4
977-
// CHECK2-NEXT: %[[VAL_248:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_167]], i32 0, i32 1
978-
// CHECK2-NEXT: %[[VAL_249:.*]] = load float, ptr %[[VAL_248]], align 4
979-
// CHECK2-NEXT: %[[VAL_250:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 0
980-
// CHECK2-NEXT: %[[VAL_251:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 1
981-
// CHECK2-NEXT: store float %[[VAL_247]], ptr %[[VAL_250]], align 4
982-
// CHECK2-NEXT: store float %[[VAL_249]], ptr %[[VAL_251]], align 4
983-
// CHECK2-NEXT: %[[VAL_252:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 0
984-
// CHECK2-NEXT: %[[VAL_253:.*]] = load float, ptr %[[VAL_252]], align 4
985-
// CHECK2-NEXT: %[[VAL_254:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 1
986-
// CHECK2-NEXT: %[[VAL_255:.*]] = load float, ptr %[[VAL_254]], align 4
987-
// CHECK2-NEXT: %[[VAL_256:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
988-
// CHECK2-NEXT: %[[VAL_257:.*]] = load float, ptr %[[VAL_256]], align 4
989-
// CHECK2-NEXT: %[[VAL_258:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
990-
// CHECK2-NEXT: %[[VAL_259:.*]] = load float, ptr %[[VAL_258]], align 4
991-
// CHECK2-NEXT: %[[VAL_260:.*]] = fadd float %[[VAL_253]], %[[VAL_257]]
992-
// CHECK2-NEXT: %[[VAL_261:.*]] = fadd float %[[VAL_255]], %[[VAL_259]]
993-
// CHECK2-NEXT: %[[VAL_262:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_168]], i32 0, i32 0
994-
// CHECK2-NEXT: %[[VAL_263:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_168]], i32 0, i32 1
972+
// CHECK2-NEXT: br label %[[VAL_244:.*]]
973+
// CHECK2: atomic_cont: ; preds = %[[VAL_244]], %[[VAL_227]]
974+
// CHECK2-NEXT: %[[VAL_245:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_167]], i32 0, i32 0
975+
// CHECK2-NEXT: %[[VAL_246:.*]] = load float, ptr %[[VAL_245]], align 4
976+
// CHECK2-NEXT: %[[VAL_247:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_167]], i32 0, i32 1
977+
// CHECK2-NEXT: %[[VAL_248:.*]] = load float, ptr %[[VAL_247]], align 4
978+
// CHECK2-NEXT: %[[VAL_249:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 0
979+
// CHECK2-NEXT: %[[VAL_250:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 1
980+
// CHECK2-NEXT: store float %[[VAL_246]], ptr %[[VAL_249]], align 4
981+
// CHECK2-NEXT: store float %[[VAL_248]], ptr %[[VAL_250]], align 4
982+
// CHECK2-NEXT: %[[VAL_251:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 0
983+
// CHECK2-NEXT: %[[VAL_252:.*]] = load float, ptr %[[VAL_251]], align 4
984+
// CHECK2-NEXT: %[[VAL_253:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_169]], i32 0, i32 1
985+
// CHECK2-NEXT: %[[VAL_254:.*]] = load float, ptr %[[VAL_253]], align 4
986+
// CHECK2-NEXT: %[[VAL_255:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 0
987+
// CHECK2-NEXT: %[[VAL_256:.*]] = load float, ptr %[[VAL_255]], align 4
988+
// CHECK2-NEXT: %[[VAL_257:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_163]], i32 0, i32 1
989+
// CHECK2-NEXT: %[[VAL_258:.*]] = load float, ptr %[[VAL_257]], align 4
990+
// CHECK2-NEXT: %[[VAL_259:.*]] = fadd float %[[VAL_252]], %[[VAL_256]]
991+
// CHECK2-NEXT: %[[VAL_260:.*]] = fadd float %[[VAL_254]], %[[VAL_258]]
992+
// CHECK2-NEXT: %[[VAL_261:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_168]], i32 0, i32 0
993+
// CHECK2-NEXT: %[[VAL_262:.*]] = getelementptr inbounds { float, float }, ptr %[[VAL_168]], i32 0, i32 1
994+
// CHECK2-NEXT: store float %[[VAL_259]], ptr %[[VAL_261]], align 4
995995
// CHECK2-NEXT: store float %[[VAL_260]], ptr %[[VAL_262]], align 4
996-
// CHECK2-NEXT: store float %[[VAL_261]], ptr %[[VAL_263]], align 4
997-
// CHECK2-NEXT: %[[VAL_264:.*]] = call noundef zeroext i1 @__atomic_compare_exchange(i32 noundef 8, ptr noundef %[[VAL_176]], ptr noundef %[[VAL_167]], ptr noundef %[[VAL_168]], i32 noundef 0, i32 noundef 0)
998-
// CHECK2-NEXT: br i1 %[[VAL_264]], label %[[VAL_265:.*]], label %[[VAL_245]]
999-
// CHECK2: atomic_exit: ; preds = %[[VAL_245]]
996+
// CHECK2-NEXT: %[[VAL_263:.*]] = call noundef zeroext i1 @__atomic_compare_exchange(i32 noundef 8, ptr noundef %[[VAL_176]], ptr noundef %[[VAL_167]], ptr noundef %[[VAL_168]], i32 noundef 0, i32 noundef 0)
997+
// CHECK2-NEXT: br i1 %[[VAL_263]], label %[[VAL_264:.*]], label %[[VAL_244]]
998+
// CHECK2: atomic_exit: ; preds = %[[VAL_244]]
1000999
// CHECK2-NEXT: call void @__kmpc_end_reduce(ptr @3, i32 %[[VAL_182]], ptr @.gomp_critical_user_.reduction.var)
1001-
// CHECK2-NEXT: br label %[[VAL_226]]
1002-
// CHECK2: .omp.reduction.default: ; preds = %[[VAL_265]], %[[VAL_227]], %[[VAL_223]]
1003-
// CHECK2-NEXT: %[[VAL_266:.*]] = load i32, ptr %[[VAL_161]], align 4
1004-
// CHECK2-NEXT: %[[VAL_267:.*]] = icmp ne i32 %[[VAL_266]], 0
1005-
// CHECK2-NEXT: br i1 %[[VAL_267]], label %[[VAL_268:.*]], label %[[VAL_269:.*]]
1006-
// CHECK2: .omp.lastprivate.then: ; preds = %[[VAL_226]]
1000+
// CHECK2-NEXT: br label %[[VAL_225]]
1001+
// CHECK2: .omp.reduction.default: ; preds = %[[VAL_264]], %[[VAL_226]], %[[VAL_222]]
1002+
// CHECK2-NEXT: %[[VAL_265:.*]] = load i32, ptr %[[VAL_161]], align 4
1003+
// CHECK2-NEXT: %[[VAL_266:.*]] = icmp ne i32 %[[VAL_265]], 0
1004+
// CHECK2-NEXT: br i1 %[[VAL_266]], label %[[VAL_267:.*]], label %[[VAL_268:.*]]
1005+
// CHECK2: .omp.lastprivate.then: ; preds = %[[VAL_225]]
10071006
// CHECK2-NEXT: store i32 10, ptr %[[VAL_162]], align 4
1008-
// CHECK2-NEXT: %[[VAL_270:.*]] = load i32, ptr %[[VAL_162]], align 4
1009-
// CHECK2-NEXT: store i32 %[[VAL_270]], ptr %[[VAL_153]], align 4
1010-
// CHECK2-NEXT: br label %[[VAL_269]]
1011-
// CHECK2: .omp.lastprivate.done: ; preds = %[[VAL_268]], %[[VAL_226]]
1007+
// CHECK2-NEXT: %[[VAL_269:.*]] = load i32, ptr %[[VAL_162]], align 4
1008+
// CHECK2-NEXT: store i32 %[[VAL_269]], ptr %[[VAL_153]], align 4
1009+
// CHECK2-NEXT: br label %[[VAL_268]]
1010+
// CHECK2: .omp.lastprivate.done: ; preds = %[[VAL_267]], %[[VAL_225]]
10121011
// CHECK2-NEXT: ret void
10131012
//
10141013
//

llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,9 +1913,10 @@ class OpenMPIRBuilder {
19131913
InsertPointTy createReductions(const LocationDescription &Loc,
19141914
InsertPointTy AllocaIP,
19151915
ArrayRef<ReductionInfo> ReductionInfos,
1916-
bool IsNoWait = false, bool IsByRef = false,
1917-
bool IsTeamsReduction = false,
1918-
bool HasDistribute = false);
1916+
bool IsNoWait = false, bool IsByRef = false);
1917+
1918+
///}
1919+
19191920
/// Return the insertion point used by the underlying IRBuilder.
19201921
InsertPointTy getInsertionPoint() { return Builder.saveIP(); }
19211922

0 commit comments

Comments
 (0)