brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.5 KiB · 6f0ff8b Raw
388 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 42; RUN: opt "-passes=print<scalar-evolution>" -disable-output -S %s 2>&1 | FileCheck %s3 4; PR597775define i2 @iv_nsw_poison(i2 %arg) {6; CHECK-LABEL: 'iv_nsw_poison'7; CHECK-NEXT:  Classifying expressions for: @iv_nsw_poison8; CHECK-NEXT:    %.07 = phi i2 [ 1, %bb ], [ %i, %bb1 ]9; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%bb1> U: [1,-2) S: [1,-2) Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }10; CHECK-NEXT:    %.0 = phi i2 [ 1, %bb ], [ %i2, %bb1 ]11; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%bb1> U: [1,-2) S: [1,-2) Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }12; CHECK-NEXT:    %i = add nsw i2 %.07, 113; CHECK-NEXT:    --> {-2,+,1}<nuw><%bb1> U: [-2,0) S: [-2,0) Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }14; CHECK-NEXT:    %i2 = add i2 %.0, 115; CHECK-NEXT:    --> {-2,+,1}<nuw><%bb1> U: [-2,0) S: [-2,0) Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }16; CHECK-NEXT:  Determining loop execution counts for: @iv_nsw_poison17; CHECK-NEXT:  Loop %bb1: Unpredictable backedge-taken count.18; CHECK-NEXT:  Loop %bb1: Unpredictable constant max backedge-taken count.19; CHECK-NEXT:  Loop %bb1: Unpredictable symbolic max backedge-taken count.20;21bb:22  br label %bb123 24bb1:                                              ; preds = %bb1, %bb25  %.07 = phi i2 [ 1, %bb ], [ %i, %bb1 ]26  %.0 = phi i2 [ 1, %bb ], [ %i2, %bb1 ]27  %i = add nsw i2 %.07, 128  %i2 = add i2 %.0, 129  %.not.not = icmp ult i2 %.07, %arg30  br i1 %.not.not, label %common.ret, label %bb131 32common.ret:                                       ; preds = %bb133  ret i2 %i234}35 36define i4 @iv_nsw_poison2(i4 %0, i4 %end, i4 %start) {37; CHECK-LABEL: 'iv_nsw_poison2'38; CHECK-NEXT:  Classifying expressions for: @iv_nsw_poison239; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]40; CHECK-NEXT:    --> {%start,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }41; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]42; CHECK-NEXT:    --> {%start,+,1}<nsw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }43; CHECK-NEXT:    %iv.0.next = add i4 %iv.0, 144; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }45; CHECK-NEXT:    %iv.1.next = add nsw i4 %iv.1, 146; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }47; CHECK-NEXT:  Determining loop execution counts for: @iv_nsw_poison248; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.49; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.50; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.51;52entry:53  br label %loop54 55loop:56  %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]57  %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]58  %iv.0.next = add i4 %iv.0, 159  %iv.1.next = add nsw i4 %iv.1, 160  %.not.not = icmp ult i4 %iv.0, %end61  br i1 %.not.not, label %exit, label %loop62 63exit:64  ret i4 %iv.1.next65}66 67define i2 @iv_both_adds_nsw(i2 %arg) {68; CHECK-LABEL: 'iv_both_adds_nsw'69; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nsw70; CHECK-NEXT:    %iv.0 = phi i2 [ 1, %bb ], [ %iv.0.next, %loop ]71; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-2) S: [1,-2) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }72; CHECK-NEXT:    %iv.1 = phi i2 [ 1, %bb ], [ %iv.1.next, %loop ]73; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-2) S: [1,-2) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }74; CHECK-NEXT:    %iv.0.next = add nsw i2 %iv.0, 175; CHECK-NEXT:    --> {-2,+,1}<nuw><%loop> U: [-2,0) S: [-2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }76; CHECK-NEXT:    %iv.1.next = add nsw i2 %iv.1, 177; CHECK-NEXT:    --> {-2,+,1}<nuw><%loop> U: [-2,0) S: [-2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }78; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nsw79; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.80; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.81; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.82;83bb:84  br label %loop85 86loop:87  %iv.0 = phi i2 [ 1, %bb ], [ %iv.0.next, %loop ]88  %iv.1 = phi i2 [ 1, %bb ], [ %iv.1.next, %loop ]89  %iv.0.next = add nsw i2 %iv.0, 190  %iv.1.next = add nsw i2 %iv.1, 191  %.not.not = icmp ult i2 %iv.0, %arg92  br i1 %.not.not, label %exit, label %loop93 94exit:95  ret i2 %iv.1.next96}97 98define i4 @iv_both_adds_nsw_extra_use(i4 %arg) {99; CHECK-LABEL: 'iv_both_adds_nsw_extra_use'100; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nsw_extra_use101; CHECK-NEXT:    %iv.0 = phi i4 [ 1, %bb ], [ %iv.0.next, %loop ]102; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-8) S: [1,-8) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }103; CHECK-NEXT:    %iv.1 = phi i4 [ 1, %bb ], [ %iv.1.next, %loop ]104; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-8) S: [1,-8) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }105; CHECK-NEXT:    %iv.0.next = add nsw i4 %iv.0, 1106; CHECK-NEXT:    --> {2,+,1}<nuw><%loop> U: [2,0) S: [2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }107; CHECK-NEXT:    %iv.1.next = add nsw i4 %iv.1, 1108; CHECK-NEXT:    --> {2,+,1}<nuw><%loop> U: [2,0) S: [2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }109; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nsw_extra_use110; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.111; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.112; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.113;114bb:115  br label %loop116 117loop:118  %iv.0 = phi i4 [ 1, %bb ], [ %iv.0.next, %loop ]119  %iv.1 = phi i4 [ 1, %bb ], [ %iv.1.next, %loop ]120  %iv.0.next = add nsw i4 %iv.0, 1121  call void @use(i4 %iv.0.next)122  %iv.1.next = add nsw i4 %iv.1, 1123  call void @use(i4 %iv.1.next)124  %.not.not = icmp ult i4 %iv.0, %arg125  br i1 %.not.not, label %exit, label %loop126 127exit:128  ret i4 %iv.1.next129}130 131define i4 @iv_both_adds_nsw_extra_use_incs_reordered(i4 %arg) {132; CHECK-LABEL: 'iv_both_adds_nsw_extra_use_incs_reordered'133; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nsw_extra_use_incs_reordered134; CHECK-NEXT:    %iv.0 = phi i4 [ 1, %bb ], [ %iv.0.next, %loop ]135; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-8) S: [1,-8) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }136; CHECK-NEXT:    %iv.1 = phi i4 [ 1, %bb ], [ %iv.1.next, %loop ]137; CHECK-NEXT:    --> {1,+,1}<nuw><nsw><%loop> U: [1,-8) S: [1,-8) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }138; CHECK-NEXT:    %iv.1.next = add nsw i4 %iv.1, 1139; CHECK-NEXT:    --> {2,+,1}<nuw><%loop> U: [2,0) S: [2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }140; CHECK-NEXT:    %iv.0.next = add nsw i4 %iv.0, 1141; CHECK-NEXT:    --> {2,+,1}<nuw><%loop> U: [2,0) S: [2,0) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }142; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nsw_extra_use_incs_reordered143; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.144; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.145; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.146;147bb:148  br label %loop149 150loop:151  %iv.0 = phi i4 [ 1, %bb ], [ %iv.0.next, %loop ]152  %iv.1 = phi i4 [ 1, %bb ], [ %iv.1.next, %loop ]153  %iv.1.next = add nsw i4 %iv.1, 1154  call void @use(i4 %iv.1.next)155  %iv.0.next = add nsw i4 %iv.0, 1156  call void @use(i4 %iv.0.next)157  %.not.not = icmp ult i4 %iv.0, %arg158  br i1 %.not.not, label %exit, label %loop159 160exit:161  ret i4 %iv.1.next162}163 164define i4 @iv_nsw_poison_extra_use(i4 %0, i4 %end, i4 %start) {165; CHECK-LABEL: 'iv_nsw_poison_extra_use'166; CHECK-NEXT:  Classifying expressions for: @iv_nsw_poison_extra_use167; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]168; CHECK-NEXT:    --> {%start,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }169; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]170; CHECK-NEXT:    --> {%start,+,1}<nsw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }171; CHECK-NEXT:    %iv.0.next = add i4 %iv.0, 1172; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }173; CHECK-NEXT:    %iv.1.next = add nsw i4 %iv.1, 1174; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }175; CHECK-NEXT:  Determining loop execution counts for: @iv_nsw_poison_extra_use176; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.177; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.178; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.179;180entry:181  br label %loop182 183loop:184  %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]185  %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]186  %iv.0.next = add i4 %iv.0, 1187  call void @use(i4 %iv.0.next)188  %iv.1.next = add nsw i4 %iv.1, 1189  %.not.not = icmp ult i4 %iv.0, %end190  br i1 %.not.not, label %exit, label %loop191 192exit:193  ret i4 %iv.1.next194}195 196declare void @use(i4)197 198define i2 @iv_nuw_poison(i2 %arg, i2 %start) {199; CHECK-LABEL: 'iv_nuw_poison'200; CHECK-NEXT:  Classifying expressions for: @iv_nuw_poison201; CHECK-NEXT:    %.07 = phi i2 [ %start, %bb ], [ %i, %bb1 ]202; CHECK-NEXT:    --> {%start,+,1}<nuw><%bb1> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }203; CHECK-NEXT:    %.0 = phi i2 [ %start, %bb ], [ %i2, %bb1 ]204; CHECK-NEXT:    --> {%start,+,1}<nuw><%bb1> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }205; CHECK-NEXT:    %i = add nuw i2 %.07, 1206; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%bb1> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }207; CHECK-NEXT:    %i2 = add i2 %.0, 1208; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%bb1> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb1: Computable }209; CHECK-NEXT:  Determining loop execution counts for: @iv_nuw_poison210; CHECK-NEXT:  Loop %bb1: Unpredictable backedge-taken count.211; CHECK-NEXT:  Loop %bb1: Unpredictable constant max backedge-taken count.212; CHECK-NEXT:  Loop %bb1: Unpredictable symbolic max backedge-taken count.213;214bb:215  br label %bb1216 217bb1:                                              ; preds = %bb1, %bb218  %.07 = phi i2 [ %start, %bb ], [ %i, %bb1 ]219  %.0 = phi i2 [ %start, %bb ], [ %i2, %bb1 ]220  %i = add nuw i2 %.07, 1221  %i2 = add i2 %.0, 1222  %.not.not = icmp ult i2 %.07, %arg223  br i1 %.not.not, label %common.ret, label %bb1224 225common.ret:                                       ; preds = %bb1226  ret i2 %i2227}228 229define i4 @iv_nuw_poison2(i4 %0, i4 %end, i4 %start) {230; CHECK-LABEL: 'iv_nuw_poison2'231; CHECK-NEXT:  Classifying expressions for: @iv_nuw_poison2232; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]233; CHECK-NEXT:    --> {%start,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }234; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]235; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }236; CHECK-NEXT:    %iv.0.next = add i4 %iv.0, 1237; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }238; CHECK-NEXT:    %iv.1.next = add nuw i4 %iv.1, 1239; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }240; CHECK-NEXT:  Determining loop execution counts for: @iv_nuw_poison2241; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.242; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.243; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.244;245entry:246  br label %loop247 248loop:249  %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]250  %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]251  %iv.0.next = add i4 %iv.0, 1252  %iv.1.next = add nuw i4 %iv.1, 1253  %.not.not = icmp ult i4 %iv.0, %end254  br i1 %.not.not, label %exit, label %loop255 256exit:257  ret i4 %iv.1.next258}259 260define i2 @iv_both_adds_nuw(i2 %arg, i2 %start) {261; CHECK-LABEL: 'iv_both_adds_nuw'262; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nuw263; CHECK-NEXT:    %iv.0 = phi i2 [ %start, %bb ], [ %iv.0.next, %loop ]264; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }265; CHECK-NEXT:    %iv.1 = phi i2 [ %start, %bb ], [ %iv.1.next, %loop ]266; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }267; CHECK-NEXT:    %iv.0.next = add nuw i2 %iv.0, 1268; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }269; CHECK-NEXT:    %iv.1.next = add nuw i2 %iv.1, 1270; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }271; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nuw272; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.273; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.274; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.275;276bb:277  br label %loop278 279loop:280  %iv.0 = phi i2 [ %start, %bb ], [ %iv.0.next, %loop ]281  %iv.1 = phi i2 [ %start, %bb ], [ %iv.1.next, %loop ]282  %iv.0.next = add nuw i2 %iv.0, 1283  %iv.1.next = add nuw i2 %iv.1, 1284  %.not.not = icmp ult i2 %iv.0, %arg285  br i1 %.not.not, label %exit, label %loop286 287exit:288  ret i2 %iv.1.next289}290 291define i4 @iv_both_adds_nuw_extra_use(i4 %arg, i4 %start) {292; CHECK-LABEL: 'iv_both_adds_nuw_extra_use'293; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nuw_extra_use294; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %bb ], [ %iv.0.next, %loop ]295; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }296; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %bb ], [ %iv.1.next, %loop ]297; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }298; CHECK-NEXT:    %iv.0.next = add nuw i4 %iv.0, 1299; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }300; CHECK-NEXT:    %iv.1.next = add nuw i4 %iv.1, 1301; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }302; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nuw_extra_use303; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.304; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.305; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.306;307bb:308  br label %loop309 310loop:311  %iv.0 = phi i4 [ %start, %bb ], [ %iv.0.next, %loop ]312  %iv.1 = phi i4 [ %start, %bb ], [ %iv.1.next, %loop ]313  %iv.0.next = add nuw i4 %iv.0, 1314  call void @use(i4 %iv.0.next)315  %iv.1.next = add nuw i4 %iv.1, 1316  call void @use(i4 %iv.1.next)317  %.not.not = icmp ult i4 %iv.0, %arg318  br i1 %.not.not, label %exit, label %loop319 320exit:321  ret i4 %iv.1.next322}323 324define i4 @iv_both_adds_nuw_extra_use_incs_reordered(i4 %arg, i4 %start) {325; CHECK-LABEL: 'iv_both_adds_nuw_extra_use_incs_reordered'326; CHECK-NEXT:  Classifying expressions for: @iv_both_adds_nuw_extra_use_incs_reordered327; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %bb ], [ %iv.0.next, %loop ]328; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }329; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %bb ], [ %iv.1.next, %loop ]330; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }331; CHECK-NEXT:    %iv.1.next = add nuw i4 %iv.1, 1332; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }333; CHECK-NEXT:    %iv.0.next = add nuw i4 %iv.0, 1334; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }335; CHECK-NEXT:  Determining loop execution counts for: @iv_both_adds_nuw_extra_use_incs_reordered336; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.337; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.338; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.339;340bb:341  br label %loop342 343loop:344  %iv.0 = phi i4 [ %start, %bb ], [ %iv.0.next, %loop ]345  %iv.1 = phi i4 [ %start, %bb ], [ %iv.1.next, %loop ]346  %iv.1.next = add nuw i4 %iv.1, 1347  call void @use(i4 %iv.1.next)348  %iv.0.next = add nuw i4 %iv.0, 1349  call void @use(i4 %iv.0.next)350  %.not.not = icmp ult i4 %iv.0, %arg351  br i1 %.not.not, label %exit, label %loop352 353exit:354  ret i4 %iv.1.next355}356 357define i4 @iv_nuw_poison_extra_use(i4 %0, i4 %end, i4 %start) {358; CHECK-LABEL: 'iv_nuw_poison_extra_use'359; CHECK-NEXT:  Classifying expressions for: @iv_nuw_poison_extra_use360; CHECK-NEXT:    %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]361; CHECK-NEXT:    --> {%start,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }362; CHECK-NEXT:    %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]363; CHECK-NEXT:    --> {%start,+,1}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }364; CHECK-NEXT:    %iv.0.next = add i4 %iv.0, 1365; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }366; CHECK-NEXT:    %iv.1.next = add nuw i4 %iv.1, 1367; CHECK-NEXT:    --> {(1 + %start),+,1}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }368; CHECK-NEXT:  Determining loop execution counts for: @iv_nuw_poison_extra_use369; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.370; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.371; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.372;373entry:374  br label %loop375 376loop:377  %iv.0 = phi i4 [ %start, %entry ], [ %iv.0.next, %loop ]378  %iv.1 = phi i4 [ %start, %entry ], [ %iv.1.next, %loop ]379  %iv.0.next = add i4 %iv.0, 1380  call void @use(i4 %iv.0.next)381  %iv.1.next = add nuw i4 %iv.1, 1382  %.not.not = icmp ult i4 %iv.0, %end383  br i1 %.not.not, label %exit, label %loop384 385exit:386  ret i4 %iv.1.next387}388