@@ -774,8 +774,8 @@ for (int i = 0; i < argc; ++i) {
774774// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
775775// CHECK3-NEXT: br label [[OMP_SECTION_LOOP_AFTER:%.*]]
776776// CHECK3: omp_section_loop.after:
777- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_PREHEADER13 :%.*]]
778- // CHECK3: omp_section_loop.preheader13 :
777+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_PREHEADER16 :%.*]]
778+ // CHECK3: omp_section_loop.preheader16 :
779779// CHECK3-NEXT: store i32 0, ptr [[P_LOWERBOUND29]], align 4
780780// CHECK3-NEXT: store i32 1, ptr [[P_UPPERBOUND30]], align 4
781781// CHECK3-NEXT: store i32 1, ptr [[P_STRIDE31]], align 4
@@ -785,52 +785,52 @@ for (int i = 0; i < argc; ++i) {
785785// CHECK3-NEXT: [[TMP10:%.*]] = load i32, ptr [[P_UPPERBOUND30]], align 4
786786// CHECK3-NEXT: [[TMP11:%.*]] = sub i32 [[TMP10]], [[TMP9]]
787787// CHECK3-NEXT: [[TMP12:%.*]] = add i32 [[TMP11]], 1
788- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_HEADER14 :%.*]]
789- // CHECK3: omp_section_loop.header14 :
790- // CHECK3-NEXT: [[OMP_SECTION_LOOP_IV20:%.*]] = phi i32 [ 0, [[OMP_SECTION_LOOP_PREHEADER13 ]] ], [ [[OMP_SECTION_LOOP_NEXT22:%.*]], [[OMP_SECTION_LOOP_INC17:%.*]] ]
791- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_COND15 :%.*]]
792- // CHECK3: omp_section_loop.cond15 :
788+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_HEADER17 :%.*]]
789+ // CHECK3: omp_section_loop.header17 :
790+ // CHECK3-NEXT: [[OMP_SECTION_LOOP_IV20:%.*]] = phi i32 [ 0, [[OMP_SECTION_LOOP_PREHEADER16 ]] ], [ [[OMP_SECTION_LOOP_NEXT22:%.*]], [[OMP_SECTION_LOOP_INC17:%.*]] ]
791+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_COND18 :%.*]]
792+ // CHECK3: omp_section_loop.cond18 :
793793// CHECK3-NEXT: [[OMP_SECTION_LOOP_CMP21:%.*]] = icmp ult i32 [[OMP_SECTION_LOOP_IV20]], [[TMP12]]
794- // CHECK3-NEXT: br i1 [[OMP_SECTION_LOOP_CMP21]], label [[OMP_SECTION_LOOP_BODY16 :%.*]], label [[OMP_SECTION_LOOP_EXIT18 :%.*]]
795- // CHECK3: omp_section_loop.body16 :
794+ // CHECK3-NEXT: br i1 [[OMP_SECTION_LOOP_CMP21]], label [[OMP_SECTION_LOOP_BODY19 :%.*]], label [[OMP_SECTION_LOOP_EXIT21 :%.*]]
795+ // CHECK3: omp_section_loop.body19 :
796796// CHECK3-NEXT: [[TMP13:%.*]] = add i32 [[OMP_SECTION_LOOP_IV20]], [[TMP9]]
797797// CHECK3-NEXT: [[TMP14:%.*]] = mul i32 [[TMP13]], 1
798798// CHECK3-NEXT: [[TMP15:%.*]] = add i32 [[TMP14]], 0
799799// CHECK3-NEXT: switch i32 [[TMP15]], label [[OMP_SECTION_LOOP_BODY16_SECTIONS_AFTER:%.*]] [
800- // CHECK3-NEXT: i32 0, label [[OMP_SECTION_LOOP_BODY_CASE23 :%.*]]
801- // CHECK3-NEXT: i32 1, label [[OMP_SECTION_LOOP_BODY_CASE25 :%.*]]
800+ // CHECK3-NEXT: i32 0, label [[OMP_SECTION_LOOP_BODY_CASE26 :%.*]]
801+ // CHECK3-NEXT: i32 1, label [[OMP_SECTION_LOOP_BODY_CASE29 :%.*]]
802802// CHECK3-NEXT: ]
803- // CHECK3: omp_section_loop.body.case23 :
803+ // CHECK3: omp_section_loop.body.case26 :
804804// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM24:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
805805// CHECK3-NEXT: [[TMP16:%.*]] = call i32 @__kmpc_cancel(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM24]], i32 3)
806806// CHECK3-NEXT: [[TMP17:%.*]] = icmp eq i32 [[TMP16]], 0
807- // CHECK3-NEXT: br i1 [[TMP17]], label [[OMP_SECTION_LOOP_BODY_CASE23_SPLIT :%.*]], label [[OMP_SECTION_LOOP_BODY_CASE23_CNCL :%.*]]
808- // CHECK3: omp_section_loop.body.case23 .split:
809- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE23_SECTION_AFTER :%.*]]
810- // CHECK3: omp_section_loop.body.case23 .section.after:
807+ // CHECK3-NEXT: br i1 [[TMP17]], label [[OMP_SECTION_LOOP_BODY_CASE26_SPLIT :%.*]], label [[OMP_SECTION_LOOP_BODY_CASE26_CNCL :%.*]]
808+ // CHECK3: omp_section_loop.body.case26 .split:
809+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE26_SECTION_AFTER :%.*]]
810+ // CHECK3: omp_section_loop.body.case26 .section.after:
811811// CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY16_SECTIONS_AFTER]]
812- // CHECK3: omp_section_loop.body.case26 :
812+ // CHECK3: omp_section_loop.body.case29 :
813813// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM27:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
814814// CHECK3-NEXT: [[TMP18:%.*]] = call i32 @__kmpc_cancel(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM27]], i32 3)
815815// CHECK3-NEXT: [[TMP19:%.*]] = icmp eq i32 [[TMP18]], 0
816- // CHECK3-NEXT: br i1 [[TMP19]], label [[OMP_SECTION_LOOP_BODY_CASE25_SPLIT :%.*]], label [[OMP_SECTION_LOOP_BODY_CASE25_CNCL :%.*]]
817- // CHECK3: omp_section_loop.body.case26 .split:
818- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE25_SECTION_AFTER26 :%.*]]
819- // CHECK3: omp_section_loop.body.case26 .section.after27 :
820- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE25_SECTION_AFTER :%.*]]
821- // CHECK3: omp_section_loop.body.case26 .section.after:
822- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY16_SECTIONS_AFTER ]]
823- // CHECK3: omp_section_loop.body16 .sections.after:
824- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_INC17 ]]
825- // CHECK3: omp_section_loop.inc17 :
816+ // CHECK3-NEXT: br i1 [[TMP19]], label [[OMP_SECTION_LOOP_BODY_CASE29_SPLIT :%.*]], label [[OMP_SECTION_LOOP_BODY_CASE29_CNCL :%.*]]
817+ // CHECK3: omp_section_loop.body.case29 .split:
818+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE25_SECTION_AFTER29 :%.*]]
819+ // CHECK3: omp_section_loop.body.case29 .section.after30 :
820+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY_CASE29_SECTION_AFTER :%.*]]
821+ // CHECK3: omp_section_loop.body.case29 .section.after:
822+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_BODY19_SECTIONS_AFTER:.* ]]
823+ // CHECK3: omp_section_loop.body19 .sections.after:
824+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_INC20:.* ]]
825+ // CHECK3: omp_section_loop.inc20 :
826826// CHECK3-NEXT: [[OMP_SECTION_LOOP_NEXT22]] = add nuw i32 [[OMP_SECTION_LOOP_IV20]], 1
827- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_HEADER14 ]]
828- // CHECK3: omp_section_loop.exit18 :
827+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_HEADER17 ]]
828+ // CHECK3: omp_section_loop.exit21 :
829829// CHECK3-NEXT: call void @__kmpc_for_static_fini(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM32]])
830830// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM33:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
831831// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[OMP_GLOBAL_THREAD_NUM33]])
832- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_AFTER19 :%.*]]
833- // CHECK3: omp_section_loop.after19 :
832+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_AFTER22 :%.*]]
833+ // CHECK3: omp_section_loop.after22 :
834834// CHECK3-NEXT: [[TMP20:%.*]] = load i32, ptr [[ARGC_ADDR]], align 4
835835// CHECK3-NEXT: store i32 [[TMP20]], ptr [[DOTCAPTURE_EXPR_]], align 4
836836// CHECK3-NEXT: [[TMP21:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
@@ -887,11 +887,11 @@ for (int i = 0; i < argc; ++i) {
887887// CHECK3: .cancel.exit:
888888// CHECK3-NEXT: br label [[CANCEL_EXIT:%.*]]
889889// CHECK3: omp_section_loop.body.case.cncl:
890- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_EXIT]]
891- // CHECK3: omp_section_loop.body.case23.cncl:
892- // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_EXIT18]]
890+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_EXIT:.*]]
893891// CHECK3: omp_section_loop.body.case26.cncl:
894- // CHECK3-NEXT: br label [[OMP_REGION_FINALIZE:.*]]
892+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_EXIT18:.*]]
893+ // CHECK3: omp_section_loop.body.case29.cncl:
894+ // CHECK3-NEXT: br label [[OMP_SECTION_LOOP_EXIT21:.*]]
895895// CHECK3: .cancel.continue:
896896// CHECK3-NEXT: br label [[OMP_IF_END:%.*]]
897897// CHECK3: omp_if.else:
@@ -950,8 +950,17 @@ for (int i = 0; i < argc; ++i) {
950950// CHECK3-NEXT: [[TOBOOL:%.*]] = fcmp une float [[TMP2]], 0.000000e+00
951951// CHECK3-NEXT: br i1 [[TOBOOL]], label [[TMP14:%.*]], label [[TMP3:%.*]]
952952// CHECK3: 3:
953- // CHECK3-NEXT: br label [[TMP4:%.*]]
954- // CHECK3: 4:
953+ // CHECK3-NEXT: %[[GTN:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)
954+ // CHECK3-NEXT: %[[CANCEL_POINT:.*]] = call i32 @__kmpc_cancellationpoint(ptr @1, i32 %[[GTN]], i32 1)
955+ // CHECK3-NEXT: %[[COND:.*]] = icmp eq i32 %[[CANCEL_POINT]], 0
956+ // CHECK3-NEXT: br i1 %[[COND]], label %[[SPLIT:.*]], label %[[CNCL:.*]]
957+ // CHECK3: .cncl:
958+ // CHECK3-NEXT: br label %[[FINI:.*]]
959+ // CHECK3: .fini:
960+ // CHECK3-NEXT: br label %[[EXIT_STUB:omp.par.exit.exitStub]]
961+ // CHECK3: .split:
962+ // CHECK3-NEXT: br label [[TMP6:%.*]]
963+ // CHECK3: 6:
955964// CHECK3-NEXT: [[TMP5:%.*]] = load i32, ptr [[LOADGEP_ARGC_ADDR]], align 4
956965// CHECK3-NEXT: [[CONV:%.*]] = trunc i32 [[TMP5]] to i8
957966// CHECK3-NEXT: [[TMP6:%.*]] = load ptr, ptr [[LOADGEP_ARGV_ADDR]], align 8
@@ -963,10 +972,8 @@ for (int i = 0; i < argc; ++i) {
963972// CHECK3-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_cancel_barrier(ptr @[[GLOB3:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM4]])
964973// CHECK3-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 0
965974// CHECK3-NEXT: br i1 [[TMP9]], label [[DOTCONT:%.*]], label [[DOTCNCL5:%.*]]
966- // CHECK3: .cncl4:
967- // CHECK3-NEXT: br label [[FINI:%.*]]
968- // CHECK3: .fini
969- // CHECK3-NEXT: br label %[[EXIT_STUB:omp.par.exit.exitStub]]
975+ // CHECK3: .cncl7:
976+ // CHECK3-NEXT: br label %[[FINI]]
970977// CHECK3: .cont:
971978// CHECK3-NEXT: [[TMP10:%.*]] = load i32, ptr [[LOADGEP_ARGC_ADDR]], align 4
972979// CHECK3-NEXT: [[TMP11:%.*]] = load ptr, ptr [[LOADGEP_ARGV_ADDR]], align 8
@@ -982,16 +989,16 @@ for (int i = 0; i < argc; ++i) {
982989// CHECK3: omp.par.region.parallel.after:
983990// CHECK3-NEXT: br label [[OMP_PAR_PRE_FINALIZE:%.*]]
984991// CHECK3: omp.par.pre_finalize:
985- // CHECK3-NEXT: br label [[FINI]]
986- // CHECK3: 14 :
992+ // CHECK3-NEXT: br label % [[FINI]]
993+ // CHECK3: 16 :
987994// CHECK3-NEXT: [[OMP_GLOBAL_THREAD_NUM1:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
988995// CHECK3-NEXT: [[TMP15:%.*]] = call i32 @__kmpc_cancel(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM1]], i32 1)
989996// CHECK3-NEXT: [[TMP16:%.*]] = icmp eq i32 [[TMP15]], 0
990997// CHECK3-NEXT: br i1 [[TMP16]], label [[DOTSPLIT:%.*]], label [[DOTCNCL:%.*]]
991- // CHECK3: .cncl :
992- // CHECK3-NEXT: br label [[FINI]]
993- // CHECK3: .split :
994- // CHECK3-NEXT: br label [[TMP4]]
998+ // CHECK3: .cncl4 :
999+ // CHECK3-NEXT: br label % [[FINI]]
1000+ // CHECK3: .split3 :
1001+ // CHECK3-NEXT: br label {{.+}}
9951002// CHECK3: omp.par.exit.exitStub:
9961003// CHECK3-NEXT: ret void
9971004//
@@ -1160,7 +1167,7 @@ for (int i = 0; i < argc; ++i) {
11601167// CHECK3: .omp.sections.case2.split:
11611168// CHECK3-NEXT: br label [[DOTOMP_SECTIONS_CASE2_SECTION_AFTER:%.*]]
11621169// CHECK3: .omp.sections.case2.section.after:
1163- // CHECK3-NEXT: br label [[OMP_REGION_FINALIZE]]
1170+ // CHECK3-NEXT: br label [[OMP_REGION_FINALIZE:.* ]]
11641171// CHECK3: omp_region.finalize:
11651172// CHECK3-NEXT: br label [[OMP_SECTIONS_EXIT:.*]]
11661173// CHECK3: .omp.sections.case2.cncl:
0 commit comments