66; status. This was caught by the expensive check introduced in D86589.
77
88target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
9- target triple = "x86_64-unknown-linux-gnu"
109
11- @ptr = external global i64
12-
13- define dso_local void @hoge () local_unnamed_addr {
10+ define void @hoge (i64 %x , i64 %idx.start , ptr %ptr ) {
1411; CHECK-LABEL: @hoge(
1512; CHECK-NEXT: entry:
16- ; CHECK-NEXT: [[N:%.*]] = sdiv exact i64 undef, 40
17- ; CHECK-NEXT: [[TMP0:%.*]] = sub i64 undef, [[N]]
13+ ; CHECK-NEXT: [[N:%.*]] = sdiv exact i64 [[X:%.*]], 40
14+ ; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[IDX_START:%.*]], 1
15+ ; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[N]]
1816; CHECK-NEXT: br label [[HEADER:%.*]]
1917; CHECK: header:
20- ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[LATCH:%.*]] ], [ [[TMP0 ]], [[ENTRY:%.*]] ]
21- ; CHECK-NEXT: [[IDX:%.*]] = phi i64 [ [[IDX_NEXT:%.*]], [[LATCH]] ], [ undef , [[ENTRY]] ]
18+ ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[LATCH:%.*]] ], [ [[TMP1 ]], [[ENTRY:%.*]] ]
19+ ; CHECK-NEXT: [[IDX:%.*]] = phi i64 [ [[IDX_NEXT:%.*]], [[LATCH]] ], [ [[IDX_START]] , [[ENTRY]] ]
2220; CHECK-NEXT: [[COND:%.*]] = icmp sgt i64 [[N]], [[IDX]]
2321; CHECK-NEXT: br i1 [[COND]], label [[END:%.*]], label [[INNER_PREHEADER:%.*]]
2422; CHECK: inner.preheader:
2523; CHECK-NEXT: br label [[INNER:%.*]]
2624; CHECK: inner:
2725; CHECK-NEXT: [[I:%.*]] = phi i64 [ [[I_NEXT:%.*]], [[INNER]] ], [ 0, [[INNER_PREHEADER]] ]
2826; CHECK-NEXT: [[I_NEXT]] = add nuw i64 [[I]], 1
29- ; CHECK-NEXT: store i64 undef , ptr @ptr , align 8
27+ ; CHECK-NEXT: store i64 0 , ptr [[PTR:%.*]] , align 8
3028; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[I_NEXT]], [[INDVARS_IV]]
3129; CHECK-NEXT: br i1 [[EXITCOND]], label [[INNER]], label [[INNER_EXIT:%.*]]
3230; CHECK: inner_exit:
@@ -41,11 +39,11 @@ define dso_local void @hoge() local_unnamed_addr {
4139; CHECK-NEXT: ret void
4240;
4341entry: ; preds = %entry
44- %n = sdiv exact i64 undef , 40
42+ %n = sdiv exact i64 %x , 40
4543 br label %header
4644
4745header: ; preds = %latch, %entry
48- %idx = phi i64 [ %idx.next , %latch ], [ undef , %entry ]
46+ %idx = phi i64 [ %idx.next , %latch ], [ %idx.start , %entry ]
4947 %cond = icmp sgt i64 %n , %idx
5048 br i1 %cond , label %end , label %inner
5149
@@ -54,7 +52,7 @@ inner: ; preds = %inner, %header
5452 %j = phi i64 [ %j.next , %inner ], [ %n , %header ]
5553 %i.next = add nsw i64 %i , 1
5654 %j.next = add nsw i64 %j , 1
57- store i64 undef , ptr @ ptr
55+ store i64 0 , ptr % ptr
5856 %cond1 = icmp slt i64 %j , %idx
5957 br i1 %cond1 , label %inner , label %inner_exit
6058
0 commit comments