44target  datalayout  = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 
55target  triple  = "x86_64-apple-macosx10.8.0" 
66
7- define  i32  @conversion_cost1 (i32  %n , ptr  nocapture  %A , ptr  nocapture  %B ) nounwind  uwtable  ssp  {
7+ define  void  @conversion_cost1 (i32  %n , ptr  nocapture  %A , ptr  nocapture  %B ) nounwind  uwtable  ssp  {
88; CHECK-LABEL: @conversion_cost1( 
99; CHECK-NEXT:    [[TMP1:%.*]] = icmp sgt i32 [[N:%.*]], 3 
1010; CHECK-NEXT:    br i1 [[TMP1]], label [[ITER_CHECK:%.*]], label [[DOT_CRIT_EDGE:%.*]] 
@@ -37,7 +37,7 @@ define i32 @conversion_cost1(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
3737; CHECK:       vec.epilog.iter.check: 
3838; CHECK-NEXT:    [[IND_END5:%.*]] = add i64 3, [[N_VEC]] 
3939; CHECK-NEXT:    [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_MOD_VF]], 4 
40- ; CHECK-NEXT:    br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]] 
40+ ; CHECK-NEXT:    br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3:![0-9]+]]  
4141; CHECK:       vec.epilog.ph: 
4242; CHECK-NEXT:    [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[VECTOR_MAIN_LOOP_ITER_CHECK]] ] 
4343; CHECK-NEXT:    [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], [[VEC_EPILOG_ITER_CHECK]] ], [ 3, [[VECTOR_MAIN_LOOP_ITER_CHECK]] ] 
@@ -58,7 +58,7 @@ define i32 @conversion_cost1(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
5858; CHECK-NEXT:    [[INDEX_NEXT11]] = add nuw i64 [[INDEX7]], 4 
5959; CHECK-NEXT:    [[VEC_IND_NEXT9]] = add <4 x i8> [[VEC_IND8]], splat (i8 4) 
6060; CHECK-NEXT:    [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT11]], [[N_VEC3]] 
61- ; CHECK-NEXT:    br i1 [[TMP12]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP3 :![0-9]+]] 
61+ ; CHECK-NEXT:    br i1 [[TMP12]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP4 :![0-9]+]] 
6262; CHECK:       vec.epilog.middle.block: 
6363; CHECK-NEXT:    [[CMP_N12:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC3]] 
6464; CHECK-NEXT:    br i1 [[CMP_N12]], label [[DOT_CRIT_EDGE_LOOPEXIT]], label [[VEC_EPILOG_SCALAR_PH]] 
@@ -73,11 +73,11 @@ define i32 @conversion_cost1(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
7373; CHECK-NEXT:    [[INDVARS_IV_NEXT]] = add i64 [[INDVARS_IV]], 1 
7474; CHECK-NEXT:    [[LFTR_WIDEIV:%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32 
7575; CHECK-NEXT:    [[EXITCOND:%.*]] = icmp eq i32 [[LFTR_WIDEIV]], [[N]] 
76- ; CHECK-NEXT:    br i1 [[EXITCOND]], label [[DOT_CRIT_EDGE_LOOPEXIT]], label [[DOTLR_PH]], !llvm.loop [[LOOP4 :![0-9]+]] 
76+ ; CHECK-NEXT:    br i1 [[EXITCOND]], label [[DOT_CRIT_EDGE_LOOPEXIT]], label [[DOTLR_PH]], !llvm.loop [[LOOP5 :![0-9]+]] 
7777; CHECK:       ._crit_edge.loopexit: 
7878; CHECK-NEXT:    br label [[DOT_CRIT_EDGE]] 
7979; CHECK:       ._crit_edge: 
80- ; CHECK-NEXT:    ret i32 undef  
80+ ; CHECK-NEXT:    ret void  
8181; 
8282  %1  = icmp  sgt  i32  %n , 3 
8383  br  i1  %1 , label  %.lr.ph , label  %._crit_edge 
@@ -93,10 +93,10 @@ define i32 @conversion_cost1(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
9393  br  i1  %exitcond , label  %._crit_edge , label  %.lr.ph 
9494
9595._crit_edge:                                      ; preds = %.lr.ph, %0 
96-   ret  i32   undef 
96+   ret  void 
9797}
9898
99- define  i32  @conversion_cost2 (i32  %n , ptr  nocapture  %A , ptr  nocapture  %B ) nounwind  uwtable  ssp  {
99+ define  void  @conversion_cost2 (i32  %n , ptr  nocapture  %A , ptr  nocapture  %B ) nounwind  uwtable  ssp  {
100100; CHECK-LABEL: @conversion_cost2( 
101101; CHECK-NEXT:    [[TMP1:%.*]] = icmp sgt i32 [[N:%.*]], 9 
102102; CHECK-NEXT:    br i1 [[TMP1]], label [[DOTLR_PH_PREHEADER:%.*]], label [[DOT_CRIT_EDGE:%.*]] 
@@ -136,7 +136,7 @@ define i32 @conversion_cost2(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
136136; CHECK-NEXT:    [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 8 
137137; CHECK-NEXT:    [[VEC_IND_NEXT]] = add <2 x i64> [[STEP_ADD_3]], splat (i64 2) 
138138; CHECK-NEXT:    [[TMP24:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]] 
139- ; CHECK-NEXT:    br i1 [[TMP24]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP5 :![0-9]+]] 
139+ ; CHECK-NEXT:    br i1 [[TMP24]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6 :![0-9]+]] 
140140; CHECK:       middle.block: 
141141; CHECK-NEXT:    [[CMP_N:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC]] 
142142; CHECK-NEXT:    br i1 [[CMP_N]], label [[DOT_CRIT_EDGE_LOOPEXIT:%.*]], label [[SCALAR_PH]] 
@@ -152,11 +152,11 @@ define i32 @conversion_cost2(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
152152; CHECK-NEXT:    [[INDVARS_IV_NEXT]] = add i64 [[INDVARS_IV]], 1 
153153; CHECK-NEXT:    [[LFTR_WIDEIV:%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32 
154154; CHECK-NEXT:    [[EXITCOND:%.*]] = icmp eq i32 [[LFTR_WIDEIV]], [[N]] 
155- ; CHECK-NEXT:    br i1 [[EXITCOND]], label [[DOT_CRIT_EDGE_LOOPEXIT]], label [[DOTLR_PH]], !llvm.loop [[LOOP6 :![0-9]+]] 
155+ ; CHECK-NEXT:    br i1 [[EXITCOND]], label [[DOT_CRIT_EDGE_LOOPEXIT]], label [[DOTLR_PH]], !llvm.loop [[LOOP7 :![0-9]+]] 
156156; CHECK:       ._crit_edge.loopexit: 
157157; CHECK-NEXT:    br label [[DOT_CRIT_EDGE]] 
158158; CHECK:       ._crit_edge: 
159- ; CHECK-NEXT:    ret i32 undef  
159+ ; CHECK-NEXT:    ret void  
160160; 
161161  %1  = icmp  sgt  i32  %n , 9 
162162  br  i1  %1 , label  %.lr.ph , label  %._crit_edge 
@@ -173,5 +173,5 @@ define i32 @conversion_cost2(i32 %n, ptr nocapture %A, ptr nocapture %B) nounwin
173173  br  i1  %exitcond , label  %._crit_edge , label  %.lr.ph 
174174
175175._crit_edge:                                      ; preds = %.lr.ph, %0 
176-   ret  i32   undef 
176+   ret  void 
177177}
0 commit comments