1*cee313d2SEric Christopher; RUN: opt < %s -indvars -S | FileCheck %s
2*cee313d2SEric Christopher
3*cee313d2SEric Christopher; This loop has backedge-taken-count zero. Indvars shouldn't expand any
4*cee313d2SEric Christopher; instructions to compute a trip count.
5*cee313d2SEric Christopher
6*cee313d2SEric Christophertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
7*cee313d2SEric Christophertarget triple = "i386-pc-linux-gnu"
8*cee313d2SEric Christopher
9*cee313d2SEric Christopherdefine i8* @string_expandtabs() nounwind {
10*cee313d2SEric Christopher; CHECK-LABEL: @string_expandtabs(
11*cee313d2SEric Christopher; CHECK-NOT: select
12*cee313d2SEric Christopherentry:
13*cee313d2SEric Christopher	br i1 undef, label %bb33, label %bb1
14*cee313d2SEric Christopher
15*cee313d2SEric Christopherbb1:		; preds = %entry
16*cee313d2SEric Christopher	br i1 undef, label %overflow1, label %bb15
17*cee313d2SEric Christopher
18*cee313d2SEric Christopherbb15:		; preds = %bb1
19*cee313d2SEric Christopher	br i1 undef, label %bb33, label %bb17
20*cee313d2SEric Christopher
21*cee313d2SEric Christopherbb17:		; preds = %bb15
22*cee313d2SEric Christopher	br label %bb30
23*cee313d2SEric Christopher
24*cee313d2SEric Christopherbb19:		; preds = %bb30
25*cee313d2SEric Christopher	br i1 undef, label %bb20, label %bb29
26*cee313d2SEric Christopher
27*cee313d2SEric Christopherbb20:		; preds = %bb19
28*cee313d2SEric Christopher	%0 = load i32, i32* undef, align 4		; <i32> [#uses=1]
29*cee313d2SEric Christopher	%1 = sub i32 %0, undef		; <i32> [#uses=1]
30*cee313d2SEric Christopher	br label %bb23
31*cee313d2SEric Christopher
32*cee313d2SEric Christopherbb21:		; preds = %bb23
33*cee313d2SEric Christopher	%2 = icmp ult i8* %q.0, undef		; <i1> [#uses=1]
34*cee313d2SEric Christopher	br i1 %2, label %bb22, label %overflow2
35*cee313d2SEric Christopher
36*cee313d2SEric Christopherbb22:		; preds = %bb21
37*cee313d2SEric Christopher	%3 = getelementptr i8, i8* %q.0, i32 1		; <i8*> [#uses=1]
38*cee313d2SEric Christopher	br label %bb23
39*cee313d2SEric Christopher
40*cee313d2SEric Christopherbb23:		; preds = %bb22, %bb20
41*cee313d2SEric Christopher	%i.2 = phi i32 [ %1, %bb20 ], [ %4, %bb22 ]		; <i32> [#uses=1]
42*cee313d2SEric Christopher	%q.0 = phi i8* [ undef, %bb20 ], [ %3, %bb22 ]		; <i8*> [#uses=3]
43*cee313d2SEric Christopher	%4 = add i32 %i.2, -1		; <i32> [#uses=2]
44*cee313d2SEric Christopher	%5 = icmp eq i32 %4, -1		; <i1> [#uses=1]
45*cee313d2SEric Christopher	br i1 %5, label %bb29, label %bb21
46*cee313d2SEric Christopher
47*cee313d2SEric Christopherbb29:		; preds = %bb23, %bb19
48*cee313d2SEric Christopher	%q.1 = phi i8* [ undef, %bb19 ], [ %q.0, %bb23 ]		; <i8*> [#uses=0]
49*cee313d2SEric Christopher	br label %bb30
50*cee313d2SEric Christopher
51*cee313d2SEric Christopherbb30:		; preds = %bb29, %bb17
52*cee313d2SEric Christopher	br i1 undef, label %bb19, label %bb33
53*cee313d2SEric Christopher
54*cee313d2SEric Christopheroverflow2:		; preds = %bb21
55*cee313d2SEric Christopher	br i1 undef, label %bb32, label %overflow1
56*cee313d2SEric Christopher
57*cee313d2SEric Christopherbb32:		; preds = %overflow2
58*cee313d2SEric Christopher	br label %overflow1
59*cee313d2SEric Christopher
60*cee313d2SEric Christopheroverflow1:		; preds = %bb32, %overflow2, %bb1
61*cee313d2SEric Christopher	ret i8* null
62*cee313d2SEric Christopher
63*cee313d2SEric Christopherbb33:		; preds = %bb30, %bb15, %entry
64*cee313d2SEric Christopher	ret i8* undef
65*cee313d2SEric Christopher}
66