; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4
; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" -scalar-evolution-max-iterations=0 -scalar-evolution-classify-expressions=0 2>&1 | FileCheck %s

; PR1101

@A = weak global [1000 x i32] zeroinitializer, align 32

define void @test1(i32 %N) {
; CHECK-LABEL: 'test1'
; CHECK-NEXT:  Determining loop execution counts for: @test1
; CHECK-NEXT:  Loop %bb3: backedge-taken count is i32 100
; CHECK-NEXT:  Loop %bb3: constant max backedge-taken count is i32 100
; CHECK-NEXT:  Loop %bb3: symbolic max backedge-taken count is i32 100
; CHECK-NEXT:  Loop %bb3: Trip multiple is 101
;
entry:
        %"alloca point" = bitcast i32 0 to i32           ; <i32> [#uses=0]
        br label %bb3

bb:             ; preds = %bb3
        %tmp = getelementptr [1000 x i32], ptr @A, i32 0, i32 %i.0          ; <ptr> [#uses=1]
        store i32 123, ptr %tmp
        %tmp2 = add i32 %i.0, 1         ; <i32> [#uses=1]
        br label %bb3

bb3:            ; preds = %bb, %entry
        %i.0 = phi i32 [ 2, %entry ], [ %tmp2, %bb ]            ; <i32> [#uses=3]
        %SQ = mul i32 %i.0, %i.0
        %tmp4 = mul i32 %i.0, 2
        %tmp5 = sub i32 %SQ, %tmp4
        %tmp3 = icmp sle i32 %tmp5, 9999          ; <i1> [#uses=1]
        br i1 %tmp3, label %bb, label %bb5

bb5:            ; preds = %bb3
        br label %return

return:         ; preds = %bb5
        ret void
}


; PR10383
; These next two used to crash.

define void @test2(i1 %cmp, i64 %n, i1 %arg) {
; CHECK-LABEL: 'test2'
; CHECK-NEXT:  Determining loop execution counts for: @test2
; CHECK-NEXT:  Loop %for.body2: Unpredictable backedge-taken count.
; CHECK-NEXT:  Loop %for.body2: Unpredictable constant max backedge-taken count.
; CHECK-NEXT:  Loop %for.body2: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT:  Loop %for.body1: Unpredictable backedge-taken count.
; CHECK-NEXT:  Loop %for.body1: Unpredictable constant max backedge-taken count.
; CHECK-NEXT:  Loop %for.body1: Unpredictable symbolic max backedge-taken count.
;
entry:
  br label %for.body1

for.body1:
  %a0.08 = phi i64 [ 0, %entry ], [ %inc512, %for.body1 ]
  %inc512 = add i64 %a0.08, 1
  br i1 %cmp, label %preheader, label %for.body1

preheader:
  br label %for.body2

for.body2:
  %indvar = phi i64 [ 0, %preheader ], [ %indvar.next, %for.body2 ]
  %tmp111 = add i64 %n, %indvar
  %tmp114 = mul i64 %a0.08, %indvar
  %mul542 = mul i64 %tmp114, %tmp111
  %indvar.next = add i64 %indvar, 1
  br i1 %arg, label %end, label %for.body2

end:
  ret void
}

define i32 @test3(i1 %arg) {
; CHECK-LABEL: 'test3'
; CHECK-NEXT:  Determining loop execution counts for: @test3
; CHECK-NEXT:  Loop %for.inc479: Unpredictable backedge-taken count.
; CHECK-NEXT:  Loop %for.inc479: Unpredictable constant max backedge-taken count.
; CHECK-NEXT:  Loop %for.inc479: Unpredictable symbolic max backedge-taken count.
;
if.then466:
  br i1 %arg, label %for.cond539.preheader, label %for.inc479

for.inc479:
  %a2.07 = phi i32 [ %add495, %for.inc479 ], [ 0, %if.then466 ]
  %j.36 = phi i32 [ %inc497, %for.inc479 ], [ undef, %if.then466 ]
  %mul484 = mul nsw i32 %j.36, %j.36
  %mul491 = mul i32 %j.36, %j.36
  %mul493 = mul i32 %mul491, %mul484
  %add495 = add nsw i32 %mul493, %a2.07
  %inc497 = add nsw i32 %j.36, 1
  br i1 %arg, label %for.cond539.preheader, label %for.inc479

for.cond539.preheader:
  unreachable
}

; PR13489
; We used to crash on this too.

define void @test4() {
; CHECK-LABEL: 'test4'
; CHECK-NEXT:  Determining loop execution counts for: @test4
; CHECK-NEXT:  Loop %for.body: Unpredictable backedge-taken count.
; CHECK-NEXT:  Loop %for.body: Unpredictable constant max backedge-taken count.
; CHECK-NEXT:  Loop %for.body: Unpredictable symbolic max backedge-taken count.
;
entry:
  br label %for.body

for.body:                                         ; preds = %for.body, %entry
  %v2.02 = phi i64 [ 2, %entry ], [ %phitmp, %for.body ]
  %v1.01 = phi i64 [ -2, %entry ], [ %sub1, %for.body ]
  %sub1 = sub i64 %v1.01, %v2.02
  %phitmp = add i64 %v2.02, 2
  %tobool = icmp eq i64 %sub1, %phitmp
  br i1 %tobool, label %for.end, label %for.body

for.end:                                          ; preds = %for.body
  ret void
}

