| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | 
 | ; RUN: opt < %s -passes=indvars -S -indvars-predicate-loops=0 | FileCheck %s | 
 |  | 
 | ; Provide legal integer types. | 
 | target datalayout = "n8:16:32:64" | 
 |  | 
 |  | 
 | @a = common global i32 0, align 4 | 
 | @c = common global i32 0, align 4 | 
 | @b = common global i32 0, align 4 | 
 |  | 
 | define void @f() { | 
 | ; CHECK-LABEL: @f( | 
 | ; CHECK-NEXT:  entry: | 
 | ; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4 | 
 | ; CHECK-NEXT:    [[TOBOOL2:%.*]] = icmp eq i32 [[TMP0]], 0 | 
 | ; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr @a, align 4 | 
 | ; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[TMP1]], 0 | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_PREHEADER:%.*]] | 
 | ; CHECK:       for.cond2.preheader: | 
 | ; CHECK-NEXT:    [[INDVARS_IV:%.*]] = phi i32 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC13:%.*]] ], [ -14, [[ENTRY:%.*]] ] | 
 | ; CHECK-NEXT:    br i1 [[TOBOOL2]], label [[FOR_INC13]], label [[FOR_BODY3_LR_PH:%.*]] | 
 | ; CHECK:       for.body3.lr.ph: | 
 | ; CHECK-NEXT:    br i1 false, label [[FOR_BODY3_LR_PH_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_FOR_BODY3_LR_PH_SPLIT_CRIT_EDGE:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.for.body3.lr.ph.split_crit_edge: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_LR_PH_SPLIT:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.us: | 
 | ; CHECK-NEXT:    br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_US_FOR_BODY3_LR_PH_SPLIT_US_SPLIT_CRIT_EDGE:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.us.split.us: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_US_US:%.*]] | 
 | ; CHECK:       for.body3.us.us: | 
 | ; CHECK-NEXT:    br i1 true, label [[COND_FALSE_US_US:%.*]], label [[COND_END_US_US:%.*]] | 
 | ; CHECK:       cond.false.us.us: | 
 | ; CHECK-NEXT:    br label [[COND_END_US_US]] | 
 | ; CHECK:       cond.end.us.us: | 
 | ; CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr @b, align 4 | 
 | ; CHECK-NEXT:    [[CMP91_US_US:%.*]] = icmp slt i32 [[TMP2]], 1 | 
 | ; CHECK-NEXT:    br i1 [[CMP91_US_US]], label [[FOR_INC_LR_PH_US_US:%.*]], label [[FOR_COND2_LOOPEXIT_US_US:%.*]] | 
 | ; CHECK:       for.cond2.loopexit.us.us: | 
 | ; CHECK-NEXT:    br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA_US:%.*]], label [[FOR_BODY3_US_US]] | 
 | ; CHECK:       for.inc.lr.ph.us.us: | 
 | ; CHECK-NEXT:    br label [[FOR_INC_US_US:%.*]] | 
 | ; CHECK:       for.cond8.for.cond2.loopexit_crit_edge.us.us: | 
 | ; CHECK-NEXT:    store i32 1, ptr @b, align 4 | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_LOOPEXIT_US_US]] | 
 | ; CHECK:       for.inc.us.us: | 
 | ; CHECK-NEXT:    [[TMP3:%.*]] = phi i32 [ [[TMP2]], [[FOR_INC_LR_PH_US_US]] ], [ [[INC_US_US:%.*]], [[FOR_INC_US_US]] ] | 
 | ; CHECK-NEXT:    [[INC_US_US]] = add nsw i32 [[TMP3]], 1 | 
 | ; CHECK-NEXT:    [[EXITCOND3:%.*]] = icmp ne i32 [[INC_US_US]], 1 | 
 | ; CHECK-NEXT:    br i1 [[EXITCOND3]], label [[FOR_INC_US_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US_US:%.*]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.us.split: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_US:%.*]] | 
 | ; CHECK:       for.body3.us: | 
 | ; CHECK-NEXT:    br i1 true, label [[COND_FALSE_US:%.*]], label [[COND_END_US:%.*]] | 
 | ; CHECK:       cond.false.us: | 
 | ; CHECK-NEXT:    br label [[COND_END_US]] | 
 | ; CHECK:       cond.end.us: | 
 | ; CHECK-NEXT:    [[TMP4:%.*]] = load i32, ptr @b, align 4 | 
 | ; CHECK-NEXT:    [[CMP91_US:%.*]] = icmp slt i32 [[TMP4]], 1 | 
 | ; CHECK-NEXT:    br i1 [[CMP91_US]], label [[FOR_INC_LR_PH_US:%.*]], label [[FOR_COND2_LOOPEXIT_US:%.*]] | 
 | ; CHECK:       for.inc.us: | 
 | ; CHECK-NEXT:    [[TMP5:%.*]] = phi i32 [ [[TMP4]], [[FOR_INC_LR_PH_US]] ], [ [[INC_US:%.*]], [[FOR_INC_US:%.*]] ] | 
 | ; CHECK-NEXT:    [[INC_US]] = add nsw i32 [[TMP5]], 1 | 
 | ; CHECK-NEXT:    [[EXITCOND2:%.*]] = icmp ne i32 [[INC_US]], 1 | 
 | ; CHECK-NEXT:    br i1 [[EXITCOND2]], label [[FOR_INC_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US:%.*]] | 
 | ; CHECK:       for.cond2.loopexit.us: | 
 | ; CHECK-NEXT:    br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA:%.*]], label [[FOR_BODY3_US]] | 
 | ; CHECK:       for.inc.lr.ph.us: | 
 | ; CHECK-NEXT:    br label [[FOR_INC_US]] | 
 | ; CHECK:       for.cond8.for.cond2.loopexit_crit_edge.us: | 
 | ; CHECK-NEXT:    store i32 1, ptr @b, align 4 | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_LOOPEXIT_US]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa.us: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split: | 
 | ; CHECK-NEXT:    br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_FOR_BODY3_LR_PH_SPLIT_SPLIT_CRIT_EDGE:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_LR_PH_SPLIT_SPLIT:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.split.us: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3_US3:%.*]] | 
 | ; CHECK:       for.body3.us3: | 
 | ; CHECK-NEXT:    br i1 false, label [[COND_FALSE_US4:%.*]], label [[COND_END_US5:%.*]] | 
 | ; CHECK:       cond.false.us4: | 
 | ; CHECK-NEXT:    br label [[COND_END_US5]] | 
 | ; CHECK:       cond.end.us5: | 
 | ; CHECK-NEXT:    [[TMP6:%.*]] = load i32, ptr @b, align 4 | 
 | ; CHECK-NEXT:    [[CMP91_US7:%.*]] = icmp slt i32 [[TMP6]], 1 | 
 | ; CHECK-NEXT:    br i1 [[CMP91_US7]], label [[FOR_INC_LR_PH_US12:%.*]], label [[FOR_COND2_LOOPEXIT_US11:%.*]] | 
 | ; CHECK:       for.inc.us8: | 
 | ; CHECK-NEXT:    [[TMP7:%.*]] = phi i32 [ [[TMP6]], [[FOR_INC_LR_PH_US12]] ], [ [[INC_US9:%.*]], [[FOR_INC_US8:%.*]] ] | 
 | ; CHECK-NEXT:    [[INC_US9]] = add nsw i32 [[TMP7]], 1 | 
 | ; CHECK-NEXT:    [[EXITCOND1:%.*]] = icmp ne i32 [[INC_US9]], 1 | 
 | ; CHECK-NEXT:    br i1 [[EXITCOND1]], label [[FOR_INC_US8]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US13:%.*]] | 
 | ; CHECK:       for.cond2.loopexit.us11: | 
 | ; CHECK-NEXT:    br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA_US:%.*]], label [[FOR_BODY3_US3]] | 
 | ; CHECK:       for.inc.lr.ph.us12: | 
 | ; CHECK-NEXT:    br label [[FOR_INC_US8]] | 
 | ; CHECK:       for.cond8.for.cond2.loopexit_crit_edge.us13: | 
 | ; CHECK-NEXT:    store i32 1, ptr @b, align 4 | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_LOOPEXIT_US11]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA:%.*]] | 
 | ; CHECK:       for.body3.lr.ph.split.split: | 
 | ; CHECK-NEXT:    br label [[FOR_BODY3:%.*]] | 
 | ; CHECK:       for.cond8.for.cond2.loopexit_crit_edge: | 
 | ; CHECK-NEXT:    store i32 1, ptr @b, align 4 | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_LOOPEXIT:%.*]] | 
 | ; CHECK:       for.cond2.loopexit: | 
 | ; CHECK-NEXT:    br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA:%.*]], label [[FOR_BODY3]] | 
 | ; CHECK:       for.body3: | 
 | ; CHECK-NEXT:    br i1 false, label [[COND_FALSE:%.*]], label [[COND_END:%.*]] | 
 | ; CHECK:       cond.false: | 
 | ; CHECK-NEXT:    br label [[COND_END]] | 
 | ; CHECK:       cond.end: | 
 | ; CHECK-NEXT:    [[TMP8:%.*]] = load i32, ptr @b, align 4 | 
 | ; CHECK-NEXT:    [[CMP91:%.*]] = icmp slt i32 [[TMP8]], 1 | 
 | ; CHECK-NEXT:    br i1 [[CMP91]], label [[FOR_INC_LR_PH:%.*]], label [[FOR_COND2_LOOPEXIT]] | 
 | ; CHECK:       for.inc.lr.ph: | 
 | ; CHECK-NEXT:    br label [[FOR_INC:%.*]] | 
 | ; CHECK:       for.inc: | 
 | ; CHECK-NEXT:    [[TMP9:%.*]] = phi i32 [ [[TMP8]], [[FOR_INC_LR_PH]] ], [ [[INC:%.*]], [[FOR_INC]] ] | 
 | ; CHECK-NEXT:    [[INC]] = add nsw i32 [[TMP9]], 1 | 
 | ; CHECK-NEXT:    [[EXITCOND:%.*]] = icmp ne i32 [[INC]], 1 | 
 | ; CHECK-NEXT:    br i1 [[EXITCOND]], label [[FOR_INC]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE:%.*]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge.us-lcssa: | 
 | ; CHECK-NEXT:    br label [[FOR_COND2_FOR_INC13_CRIT_EDGE]] | 
 | ; CHECK:       for.cond2.for.inc13_crit_edge: | 
 | ; CHECK-NEXT:    store i32 [[INDVARS_IV]], ptr @c, align 4 | 
 | ; CHECK-NEXT:    br label [[FOR_INC13]] | 
 | ; CHECK:       for.inc13: | 
 | ; CHECK-NEXT:    [[INDVARS_IV_NEXT]] = add nsw i32 [[INDVARS_IV]], 1 | 
 | ; CHECK-NEXT:    [[EXITCOND4:%.*]] = icmp ne i32 [[INDVARS_IV_NEXT]], 0 | 
 | ; CHECK-NEXT:    br i1 [[EXITCOND4]], label [[FOR_COND2_PREHEADER]], label [[FOR_END15:%.*]] | 
 | ; CHECK:       for.end15: | 
 | ; CHECK-NEXT:    ret void | 
 | ; | 
 |  | 
 | ; br i1 {{.*}}, label %[[for_inc13]], label % | 
 | entry: | 
 |   %0 = load i32, ptr @a, align 4 | 
 |   %tobool2 = icmp eq i32 %0, 0 | 
 |   %1 = load i32, ptr @a, align 4 | 
 |   %tobool = icmp eq i32 %1, 0 | 
 |   br label %for.cond2.preheader | 
 |  | 
 | for.cond2.preheader:                              ; preds = %for.inc13, %entry | 
 |   %storemerge15 = phi i8 [ -14, %entry ], [ %inc14, %for.inc13 ] | 
 |   br i1 %tobool2, label %for.inc13, label %for.body3.lr.ph | 
 |  | 
 | for.body3.lr.ph:                                  ; preds = %for.cond2.preheader | 
 |   %tobool5 = icmp eq i8 %storemerge15, 0 | 
 |   %conv7 = sext i8 %storemerge15 to i32 | 
 |   %2 = add nsw i32 %conv7, 1 | 
 |   %3 = icmp ult i32 %2, 3 | 
 |   %div = select i1 %3, i32 %conv7, i32 0 | 
 |   br i1 %tobool5, label %for.body3.lr.ph.split.us, label %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge | 
 |  | 
 | for.body3.lr.ph.for.body3.lr.ph.split_crit_edge:  ; preds = %for.body3.lr.ph | 
 |   br label %for.body3.lr.ph.split | 
 |  | 
 | for.body3.lr.ph.split.us:                         ; preds = %for.body3.lr.ph | 
 |   br i1 %tobool, label %for.body3.lr.ph.split.us.split.us, label %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge | 
 |  | 
 | for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge: ; preds = %for.body3.lr.ph.split.us | 
 |   br label %for.body3.lr.ph.split.us.split | 
 |  | 
 | for.body3.lr.ph.split.us.split.us:                ; preds = %for.body3.lr.ph.split.us | 
 |   br label %for.body3.us.us | 
 |  | 
 | for.body3.us.us:                                  ; preds = %for.cond2.loopexit.us.us, %for.body3.lr.ph.split.us.split.us | 
 |   br i1 true, label %cond.false.us.us, label %cond.end.us.us | 
 |  | 
 | cond.false.us.us:                                 ; preds = %for.body3.us.us | 
 |   br label %cond.end.us.us | 
 |  | 
 | cond.end.us.us:                                   ; preds = %cond.false.us.us, %for.body3.us.us | 
 |   %cond.us.us = phi i32 [ %div, %cond.false.us.us ], [ %conv7, %for.body3.us.us ] | 
 |   %4 = load i32, ptr @b, align 4 | 
 |   %cmp91.us.us = icmp slt i32 %4, 1 | 
 |   br i1 %cmp91.us.us, label %for.inc.lr.ph.us.us, label %for.cond2.loopexit.us.us | 
 |  | 
 | for.cond2.loopexit.us.us:                         ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us.us, %cond.end.us.us | 
 |   br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us, label %for.body3.us.us | 
 |  | 
 | for.inc.lr.ph.us.us:                              ; preds = %cond.end.us.us | 
 |   br label %for.inc.us.us | 
 |  | 
 | for.cond8.for.cond2.loopexit_crit_edge.us.us:     ; preds = %for.inc.us.us | 
 |   %inc.lcssa.us.us = phi i32 [ %inc.us.us, %for.inc.us.us ] | 
 |   store i32 %inc.lcssa.us.us, ptr @b, align 4 | 
 |   br label %for.cond2.loopexit.us.us | 
 |  | 
 | for.inc.us.us:                                    ; preds = %for.inc.us.us, %for.inc.lr.ph.us.us | 
 |   %5 = phi i32 [ %4, %for.inc.lr.ph.us.us ], [ %inc.us.us, %for.inc.us.us ] | 
 |   %inc.us.us = add nsw i32 %5, 1 | 
 |   %cmp9.us.us = icmp slt i32 %inc.us.us, 1 | 
 |   br i1 %cmp9.us.us, label %for.inc.us.us, label %for.cond8.for.cond2.loopexit_crit_edge.us.us | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us: ; preds = %for.cond2.loopexit.us.us | 
 |   %cond.lcssa.ph.us.ph.us = phi i32 [ %cond.us.us, %for.cond2.loopexit.us.us ] | 
 |   br label %for.cond2.for.inc13_crit_edge.us-lcssa.us | 
 |  | 
 | for.body3.lr.ph.split.us.split:                   ; preds = %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge | 
 |   br label %for.body3.us | 
 |  | 
 | for.body3.us:                                     ; preds = %for.cond2.loopexit.us, %for.body3.lr.ph.split.us.split | 
 |   br i1 true, label %cond.false.us, label %cond.end.us | 
 |  | 
 | cond.false.us:                                    ; preds = %for.body3.us | 
 |   br label %cond.end.us | 
 |  | 
 | cond.end.us:                                      ; preds = %cond.false.us, %for.body3.us | 
 |   %cond.us = phi i32 [ %div, %cond.false.us ], [ %conv7, %for.body3.us ] | 
 |   %6 = load i32, ptr @b, align 4 | 
 |   %cmp91.us = icmp slt i32 %6, 1 | 
 |   br i1 %cmp91.us, label %for.inc.lr.ph.us, label %for.cond2.loopexit.us | 
 |  | 
 | for.inc.us:                                       ; preds = %for.inc.lr.ph.us, %for.inc.us | 
 |   %7 = phi i32 [ %6, %for.inc.lr.ph.us ], [ %inc.us, %for.inc.us ] | 
 |   %inc.us = add nsw i32 %7, 1 | 
 |   %cmp9.us = icmp slt i32 %inc.us, 1 | 
 |   br i1 %cmp9.us, label %for.inc.us, label %for.cond8.for.cond2.loopexit_crit_edge.us | 
 |  | 
 | for.cond2.loopexit.us:                            ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us, %cond.end.us | 
 |   br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, label %for.body3.us | 
 |  | 
 | for.inc.lr.ph.us:                                 ; preds = %cond.end.us | 
 |   br label %for.inc.us | 
 |  | 
 | for.cond8.for.cond2.loopexit_crit_edge.us:        ; preds = %for.inc.us | 
 |   %inc.lcssa.us = phi i32 [ %inc.us, %for.inc.us ] | 
 |   store i32 %inc.lcssa.us, ptr @b, align 4 | 
 |   br label %for.cond2.loopexit.us | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa: ; preds = %for.cond2.loopexit.us | 
 |   %cond.lcssa.ph.us.ph = phi i32 [ %cond.us, %for.cond2.loopexit.us ] | 
 |   br label %for.cond2.for.inc13_crit_edge.us-lcssa.us | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa.us:        ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us | 
 |   %cond.lcssa.ph.us = phi i32 [ %cond.lcssa.ph.us.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa ], [ %cond.lcssa.ph.us.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us ] | 
 |   br label %for.cond2.for.inc13_crit_edge | 
 |  | 
 | for.body3.lr.ph.split:                            ; preds = %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge | 
 |   br i1 %tobool, label %for.body3.lr.ph.split.split.us, label %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge | 
 |  | 
 | for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge: ; preds = %for.body3.lr.ph.split | 
 |   br label %for.body3.lr.ph.split.split | 
 |  | 
 | for.body3.lr.ph.split.split.us:                   ; preds = %for.body3.lr.ph.split | 
 |   br label %for.body3.us3 | 
 |  | 
 | for.body3.us3:                                    ; preds = %for.cond2.loopexit.us11, %for.body3.lr.ph.split.split.us | 
 |   br i1 false, label %cond.false.us4, label %cond.end.us5 | 
 |  | 
 | cond.false.us4:                                   ; preds = %for.body3.us3 | 
 |   br label %cond.end.us5 | 
 |  | 
 | cond.end.us5:                                     ; preds = %cond.false.us4, %for.body3.us3 | 
 |   %cond.us6 = phi i32 [ %div, %cond.false.us4 ], [ %conv7, %for.body3.us3 ] | 
 |   %8 = load i32, ptr @b, align 4 | 
 |   %cmp91.us7 = icmp slt i32 %8, 1 | 
 |   br i1 %cmp91.us7, label %for.inc.lr.ph.us12, label %for.cond2.loopexit.us11 | 
 |  | 
 | for.inc.us8:                                      ; preds = %for.inc.lr.ph.us12, %for.inc.us8 | 
 |   %9 = phi i32 [ %8, %for.inc.lr.ph.us12 ], [ %inc.us9, %for.inc.us8 ] | 
 |   %inc.us9 = add nsw i32 %9, 1 | 
 |   %cmp9.us10 = icmp slt i32 %inc.us9, 1 | 
 |   br i1 %cmp9.us10, label %for.inc.us8, label %for.cond8.for.cond2.loopexit_crit_edge.us13 | 
 |  | 
 | for.cond2.loopexit.us11:                          ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us13, %cond.end.us5 | 
 |   br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us, label %for.body3.us3 | 
 |  | 
 | for.inc.lr.ph.us12:                               ; preds = %cond.end.us5 | 
 |   br label %for.inc.us8 | 
 |  | 
 | for.cond8.for.cond2.loopexit_crit_edge.us13:      ; preds = %for.inc.us8 | 
 |   %inc.lcssa.us14 = phi i32 [ %inc.us9, %for.inc.us8 ] | 
 |   store i32 %inc.lcssa.us14, ptr @b, align 4 | 
 |   br label %for.cond2.loopexit.us11 | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us: ; preds = %for.cond2.loopexit.us11 | 
 |   %cond.lcssa.ph.ph.us = phi i32 [ %cond.us6, %for.cond2.loopexit.us11 ] | 
 |   br label %for.cond2.for.inc13_crit_edge.us-lcssa | 
 |  | 
 | for.body3.lr.ph.split.split:                      ; preds = %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge | 
 |   br label %for.body3 | 
 |  | 
 | for.cond8.for.cond2.loopexit_crit_edge:           ; preds = %for.inc | 
 |   %inc.lcssa = phi i32 [ %inc, %for.inc ] | 
 |   store i32 %inc.lcssa, ptr @b, align 4 | 
 |   br label %for.cond2.loopexit | 
 |  | 
 | for.cond2.loopexit:                               ; preds = %cond.end, %for.cond8.for.cond2.loopexit_crit_edge | 
 |   br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, label %for.body3 | 
 |  | 
 | for.body3:                                        ; preds = %for.cond2.loopexit, %for.body3.lr.ph.split.split | 
 |   br i1 false, label %cond.false, label %cond.end | 
 |  | 
 | cond.false:                                       ; preds = %for.body3 | 
 |   br label %cond.end | 
 |  | 
 | cond.end:                                         ; preds = %cond.false, %for.body3 | 
 |   %cond = phi i32 [ %div, %cond.false ], [ %conv7, %for.body3 ] | 
 |   %10 = load i32, ptr @b, align 4 | 
 |   %cmp91 = icmp slt i32 %10, 1 | 
 |   br i1 %cmp91, label %for.inc.lr.ph, label %for.cond2.loopexit | 
 |  | 
 | for.inc.lr.ph:                                    ; preds = %cond.end | 
 |   br label %for.inc | 
 |  | 
 | for.inc:                                          ; preds = %for.inc, %for.inc.lr.ph | 
 |   %11 = phi i32 [ %10, %for.inc.lr.ph ], [ %inc, %for.inc ] | 
 |   %inc = add nsw i32 %11, 1 | 
 |   %cmp9 = icmp slt i32 %inc, 1 | 
 |   br i1 %cmp9, label %for.inc, label %for.cond8.for.cond2.loopexit_crit_edge | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa:  ; preds = %for.cond2.loopexit | 
 |   %cond.lcssa.ph.ph = phi i32 [ %cond, %for.cond2.loopexit ] | 
 |   br label %for.cond2.for.inc13_crit_edge.us-lcssa | 
 |  | 
 | for.cond2.for.inc13_crit_edge.us-lcssa:           ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us | 
 |   %cond.lcssa.ph = phi i32 [ %cond.lcssa.ph.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa ], [ %cond.lcssa.ph.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us ] | 
 |   br label %for.cond2.for.inc13_crit_edge | 
 |  | 
 | for.cond2.for.inc13_crit_edge:                    ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us | 
 |   %cond.lcssa = phi i32 [ %cond.lcssa.ph, %for.cond2.for.inc13_crit_edge.us-lcssa ], [ %cond.lcssa.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us ] | 
 |   store i32 %cond.lcssa, ptr @c, align 4 | 
 |   br label %for.inc13 | 
 |  | 
 | for.inc13:                                        ; preds = %for.cond2.for.inc13_crit_edge, %for.cond2.preheader | 
 |   %inc14 = add i8 %storemerge15, 1 | 
 |   %cmp = icmp ugt i8 %inc14, 50 | 
 |   br i1 %cmp, label %for.cond2.preheader, label %for.end15 | 
 |  | 
 | for.end15:                                        ; preds = %for.inc13 | 
 |   ret void | 
 | } |