@@ -13,35 +13,38 @@ source_filename = "correct-loop-info.ll"
1313define void @baz () personality i32* ()* @ham {
1414; CHECK-LABEL: @baz(
1515; CHECK-NEXT: bb:
16+ ; CHECK-NEXT: [[EXIT_PRELOOP_AT:%.*]] = call i32 @llvm.smax.i32(i32 undef, i32 -1)
17+ ; CHECK-NEXT: [[EXIT_MAINLOOP_AT:%.*]] = call i32 @llvm.smax.i32(i32 undef, i32 0)
1618; CHECK-NEXT: br label [[OUTERHEADER:%.*]]
1719; CHECK: outerheader:
1820; CHECK-NEXT: [[TMP:%.*]] = icmp slt i32 undef, 84
1921; CHECK-NEXT: br i1 [[TMP]], label [[BB2:%.*]], label [[BB16:%.*]]
2022; CHECK: bb2:
21- ; CHECK-NEXT: br i1 false, label [[INNERHEADER_PRELOOP_PREHEADER:%.*]], label [[PRELOOP_PSEUDO_EXIT:%.*]]
23+ ; CHECK-NEXT: [[TMP0:%.*]] = icmp slt i32 undef, [[EXIT_PRELOOP_AT]]
24+ ; CHECK-NEXT: br i1 [[TMP0]], label [[INNERHEADER_PRELOOP_PREHEADER:%.*]], label [[PRELOOP_PSEUDO_EXIT:%.*]]
2225; CHECK: innerheader.preloop.preheader:
2326; CHECK-NEXT: br label [[INNERHEADER_PRELOOP:%.*]]
2427; CHECK: mainloop:
25- ; CHECK-NEXT: [[TMP0 :%.*]] = icmp slt i32 [[INDVAR_END:%.*]], 0
26- ; CHECK-NEXT: br i1 [[TMP0 ]], label [[INNERHEADER_PREHEADER:%.*]], label [[MAIN_PSEUDO_EXIT:%.*]]
28+ ; CHECK-NEXT: [[TMP1 :%.*]] = icmp slt i32 [[INDVAR_END:%.*]], [[EXIT_MAINLOOP_AT]]
29+ ; CHECK-NEXT: br i1 [[TMP1 ]], label [[INNERHEADER_PREHEADER:%.*]], label [[MAIN_PSEUDO_EXIT:%.*]]
2730; CHECK: innerheader.preheader:
2831; CHECK-NEXT: br label [[INNERHEADER:%.*]]
2932; CHECK: innerheader:
3033; CHECK-NEXT: [[TMP4:%.*]] = phi i32 [ [[TMP6:%.*]], [[BB8:%.*]] ], [ [[TMP4_PRELOOP_COPY:%.*]], [[INNERHEADER_PREHEADER]] ]
3134; CHECK-NEXT: invoke void @pluto()
32- ; CHECK-NEXT: to label [[BB5:%.*]] unwind label %outer_exiting.loopexit.split-lp.loopexit.split-lp
35+ ; CHECK-NEXT: to label [[BB5:%.*]] unwind label [[OUTER_EXITING_LOOPEXIT_SPLIT_LP_LOOPEXIT_SPLIT_LP:%.*]]
3336; CHECK: bb5:
3437; CHECK-NEXT: [[TMP6]] = add i32 [[TMP4]], 1
3538; CHECK-NEXT: [[TMP7:%.*]] = icmp slt i32 [[TMP6]], 1
3639; CHECK-NEXT: br i1 true, label [[BB8]], label [[EXIT3_LOOPEXIT5:%.*]]
3740; CHECK: bb8:
3841; CHECK-NEXT: [[TMP9:%.*]] = icmp slt i32 [[TMP6]], 84
39- ; CHECK-NEXT: [[TMP1 :%.*]] = icmp slt i32 [[TMP6]], 0
40- ; CHECK-NEXT: br i1 [[TMP1 ]], label [[INNERHEADER]], label [[MAIN_EXIT_SELECTOR:%.*]]
42+ ; CHECK-NEXT: [[TMP2 :%.*]] = icmp slt i32 [[TMP6]], [[EXIT_MAINLOOP_AT]]
43+ ; CHECK-NEXT: br i1 [[TMP2 ]], label [[INNERHEADER]], label [[MAIN_EXIT_SELECTOR:%.*]]
4144; CHECK: main.exit.selector:
4245; CHECK-NEXT: [[TMP6_LCSSA:%.*]] = phi i32 [ [[TMP6]], [[BB8]] ]
43- ; CHECK-NEXT: [[TMP2 :%.*]] = icmp slt i32 [[TMP6_LCSSA]], 84
44- ; CHECK-NEXT: br i1 [[TMP2 ]], label [[MAIN_PSEUDO_EXIT]], label [[BB13:%.*]]
46+ ; CHECK-NEXT: [[TMP3 :%.*]] = icmp slt i32 [[TMP6_LCSSA]], 84
47+ ; CHECK-NEXT: br i1 [[TMP3 ]], label [[MAIN_PSEUDO_EXIT]], label [[BB13:%.*]]
4548; CHECK: main.pseudo.exit:
4649; CHECK-NEXT: [[TMP4_COPY:%.*]] = phi i32 [ [[TMP4_PRELOOP_COPY]], [[MAINLOOP:%.*]] ], [ [[TMP6_LCSSA]], [[MAIN_EXIT_SELECTOR]] ]
4750; CHECK-NEXT: [[INDVAR_END1:%.*]] = phi i32 [ [[INDVAR_END]], [[MAINLOOP]] ], [ [[TMP6_LCSSA]], [[MAIN_EXIT_SELECTOR]] ]
@@ -53,11 +56,11 @@ define void @baz() personality i32* ()* @ham {
5356; CHECK: outer_exiting.loopexit.split-lp.loopexit:
5457; CHECK-NEXT: [[LPAD_LOOPEXIT2:%.*]] = landingpad { i8*, i32 }
5558; CHECK-NEXT: cleanup
56- ; CHECK-NEXT: br label %outer_exiting.loopexit.split-lp
59+ ; CHECK-NEXT: br label [[OUTER_EXITING_LOOPEXIT_SPLIT_LP:%.*]]
5760; CHECK: outer_exiting.loopexit.split-lp.loopexit.split-lp:
58- ; CHECK-NEXT: %lpad.loopexit.split-lp3 = landingpad { i8*, i32 }
61+ ; CHECK-NEXT: [[LPAD_LOOPEXIT_SPLIT_LP3:%.*]] = landingpad { i8*, i32 }
5962; CHECK-NEXT: cleanup
60- ; CHECK-NEXT: br label %outer_exiting.loopexit.split-lp
63+ ; CHECK-NEXT: br label [[OUTER_EXITING_LOOPEXIT_SPLIT_LP]]
6164; CHECK: outer_exiting.loopexit.split-lp:
6265; CHECK-NEXT: br label [[OUTER_EXITING]]
6366; CHECK: outer_exiting:
@@ -95,12 +98,12 @@ define void @baz() personality i32* ()* @ham {
9598; CHECK-NEXT: br i1 [[TMP7_PRELOOP]], label [[BB8_PRELOOP]], label [[EXIT3_LOOPEXIT:%.*]]
9699; CHECK: bb8.preloop:
97100; CHECK-NEXT: [[TMP9_PRELOOP:%.*]] = icmp slt i32 [[TMP6_PRELOOP]], 84
98- ; CHECK-NEXT: [[TMP3 :%.*]] = icmp slt i32 [[TMP6_PRELOOP]], -1
99- ; CHECK-NEXT: br i1 [[TMP3 ]], label [[INNERHEADER_PRELOOP]], label [[PRELOOP_EXIT_SELECTOR:%.*]], !llvm.loop !0 , !irce.loop.clone !5
101+ ; CHECK-NEXT: [[TMP4 :%.*]] = icmp slt i32 [[TMP6_PRELOOP]], [[EXIT_PRELOOP_AT]]
102+ ; CHECK-NEXT: br i1 [[TMP4 ]], label [[INNERHEADER_PRELOOP]], label [[PRELOOP_EXIT_SELECTOR:%.*]], [[LOOP0: !llvm.loop !.*]] , !irce.loop.clone !5
100103; CHECK: preloop.exit.selector:
101104; CHECK-NEXT: [[TMP6_PRELOOP_LCSSA:%.*]] = phi i32 [ [[TMP6_PRELOOP]], [[BB8_PRELOOP]] ]
102- ; CHECK-NEXT: [[TMP4 :%.*]] = icmp slt i32 [[TMP6_PRELOOP_LCSSA]], 84
103- ; CHECK-NEXT: br i1 [[TMP4 ]], label [[PRELOOP_PSEUDO_EXIT]], label [[BB13]]
105+ ; CHECK-NEXT: [[TMP5 :%.*]] = icmp slt i32 [[TMP6_PRELOOP_LCSSA]], 84
106+ ; CHECK-NEXT: br i1 [[TMP5 ]], label [[PRELOOP_PSEUDO_EXIT]], label [[BB13]]
104107; CHECK: preloop.pseudo.exit:
105108; CHECK-NEXT: [[TMP4_PRELOOP_COPY]] = phi i32 [ undef, [[BB2]] ], [ [[TMP6_PRELOOP_LCSSA]], [[PRELOOP_EXIT_SELECTOR]] ]
106109; CHECK-NEXT: [[INDVAR_END]] = phi i32 [ undef, [[BB2]] ], [ [[TMP6_PRELOOP_LCSSA]], [[PRELOOP_EXIT_SELECTOR]] ]
@@ -110,14 +113,14 @@ define void @baz() personality i32* ()* @ham {
110113; CHECK: innerheader.postloop:
111114; CHECK-NEXT: [[TMP4_POSTLOOP:%.*]] = phi i32 [ [[TMP6_POSTLOOP:%.*]], [[BB8_POSTLOOP:%.*]] ], [ [[TMP4_COPY]], [[POSTLOOP]] ]
112115; CHECK-NEXT: invoke void @pluto()
113- ; CHECK-NEXT: to label [[BB5_POSTLOOP:%.*]] unwind label %outer_exiting.loopexit.split-lp.loopexit
116+ ; CHECK-NEXT: to label [[BB5_POSTLOOP:%.*]] unwind label [[OUTER_EXITING_LOOPEXIT_SPLIT_LP_LOOPEXIT:%.*]]
114117; CHECK: bb5.postloop:
115118; CHECK-NEXT: [[TMP6_POSTLOOP]] = add i32 [[TMP4_POSTLOOP]], 1
116119; CHECK-NEXT: [[TMP7_POSTLOOP:%.*]] = icmp slt i32 [[TMP6_POSTLOOP]], 1
117120; CHECK-NEXT: br i1 [[TMP7_POSTLOOP]], label [[BB8_POSTLOOP]], label [[EXIT3_LOOPEXIT4:%.*]]
118121; CHECK: bb8.postloop:
119122; CHECK-NEXT: [[TMP9_POSTLOOP:%.*]] = icmp slt i32 [[TMP6_POSTLOOP]], 84
120- ; CHECK-NEXT: br i1 [[TMP9_POSTLOOP]], label [[INNERHEADER_POSTLOOP]], label [[BB13_LOOPEXIT:%.*]], !llvm.loop !6 , !irce.loop.clone !5
123+ ; CHECK-NEXT: br i1 [[TMP9_POSTLOOP]], label [[INNERHEADER_POSTLOOP]], label [[BB13_LOOPEXIT:%.*]], [[LOOP6: !llvm.loop !.*]] , !irce.loop.clone !5
121124;
122125bb:
123126 br label %outerheader
0 commit comments