1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Exercise getConstantEvolvingPHIOperands on an interesting loop. 4*9880d681SAndroid Build Coastguard Worker; This should complete in milliseconds, not minutes. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; Just check that it actually ran trip count analysis. 7*9880d681SAndroid Build Coastguard Worker; CHECK: Determining loop execution counts for: @test 8*9880d681SAndroid Build Coastguard Workerdefine void @test() nounwind { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker br label %loop 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerloop: 13*9880d681SAndroid Build Coastguard Worker %iv = phi i32 [ %30, %loop ], [ 0, %entry ] 14*9880d681SAndroid Build Coastguard Worker %0 = add i32 %iv, 1 15*9880d681SAndroid Build Coastguard Worker %1 = add i32 %0, 2 16*9880d681SAndroid Build Coastguard Worker %2 = add i32 %1, %0 17*9880d681SAndroid Build Coastguard Worker %3 = add i32 %2, %1 18*9880d681SAndroid Build Coastguard Worker %4 = add i32 %3, %2 19*9880d681SAndroid Build Coastguard Worker %5 = add i32 %4, %3 20*9880d681SAndroid Build Coastguard Worker %6 = add i32 %5, %4 21*9880d681SAndroid Build Coastguard Worker %7 = add i32 %6, %5 22*9880d681SAndroid Build Coastguard Worker %8 = add i32 %7, %6 23*9880d681SAndroid Build Coastguard Worker %9 = add i32 %8, %7 24*9880d681SAndroid Build Coastguard Worker %10 = add i32 %9, %8 25*9880d681SAndroid Build Coastguard Worker %11 = add i32 %10, %9 26*9880d681SAndroid Build Coastguard Worker %12 = add i32 %11, %10 27*9880d681SAndroid Build Coastguard Worker %13 = add i32 %12, %11 28*9880d681SAndroid Build Coastguard Worker %14 = add i32 %13, %12 29*9880d681SAndroid Build Coastguard Worker %15 = add i32 %14, %13 30*9880d681SAndroid Build Coastguard Worker %16 = add i32 %15, %14 31*9880d681SAndroid Build Coastguard Worker %17 = add i32 %16, %15 32*9880d681SAndroid Build Coastguard Worker %18 = add i32 %17, %16 33*9880d681SAndroid Build Coastguard Worker %19 = add i32 %18, %17 34*9880d681SAndroid Build Coastguard Worker %20 = add i32 %19, %18 35*9880d681SAndroid Build Coastguard Worker %21 = add i32 %20, %19 36*9880d681SAndroid Build Coastguard Worker %22 = add i32 %21, %20 37*9880d681SAndroid Build Coastguard Worker %23 = add i32 %22, %21 38*9880d681SAndroid Build Coastguard Worker %24 = add i32 %23, %22 39*9880d681SAndroid Build Coastguard Worker %25 = add i32 %24, %23 40*9880d681SAndroid Build Coastguard Worker %26 = add i32 %25, %24 41*9880d681SAndroid Build Coastguard Worker %27 = add i32 %26, %25 42*9880d681SAndroid Build Coastguard Worker %28 = add i32 %27, %26 43*9880d681SAndroid Build Coastguard Worker %29 = add i32 %28, %27 44*9880d681SAndroid Build Coastguard Worker %30 = add i32 %29, %28 45*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %30, -108 46*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %loop 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerexit: 49*9880d681SAndroid Build Coastguard Worker unreachable 50*9880d681SAndroid Build Coastguard Worker} 51