Home | History | Annotate | Download | only in ScalarEvolution
      1 ; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
      2 
      3 ; CHECK: Loop %bb3: backedge-taken count is (-1 + %n)
      4 
      5 ; We don't want to use a max in the trip count expression in
      6 ; this testcase.
      7 
      8 define void @foo(i32 %n, i32* %p, i32* %q) nounwind {
      9 entry:
     10 	icmp sgt i32 %n, 0
     11 	br i1 %0, label %bb, label %return
     12 
     13 bb:
     14 	load i32, i32* %q, align 4
     15 	icmp eq i32 %1, 0
     16 	br i1 %2, label %return, label %bb3.preheader
     17 
     18 bb3.preheader:
     19 	br label %bb3
     20 
     21 bb3:
     22 	%i.0 = phi i32 [ %7, %bb3 ], [ 0, %bb3.preheader ]
     23 	getelementptr i32, i32* %p, i32 %i.0
     24 	load i32, i32* %3, align 4
     25 	add i32 %4, 1
     26 	getelementptr i32, i32* %p, i32 %i.0
     27 	store i32 %5, i32* %6, align 4
     28 	add i32 %i.0, 1
     29 	icmp slt i32 %7, %n
     30 	br i1 %8, label %bb3, label %return.loopexit
     31 
     32 return.loopexit:
     33 	br label %return
     34 
     35 return:
     36 	ret void
     37 }
     38