1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -indvars < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 6*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* nocapture %a, i32* nocapture readonly %b, i32 signext %n) #0 { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker %cmp.10 = icmp sgt i32 %n, 0 12*9880d681SAndroid Build Coastguard Worker br i1 %cmp.10, label %for.body.lr.ph, label %for.cond.cleanup 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerfor.body.lr.ph: ; preds = %entry 15*9880d681SAndroid Build Coastguard Worker br label %for.body 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerfor.cond.for.cond.cleanup_crit_edge: ; preds = %for.inc 18*9880d681SAndroid Build Coastguard Worker br label %for.cond.cleanup 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerfor.cond.cleanup: ; preds = %for.cond.for.cond.cleanup_crit_edge, %entry 21*9880d681SAndroid Build Coastguard Worker ret void 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerfor.body: ; preds = %for.body.lr.ph, %for.inc 24*9880d681SAndroid Build Coastguard Worker %i.011 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] 25*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp sgt i32 %i.011, %n 26*9880d681SAndroid Build Coastguard Worker br i1 %cmp1, label %if.then, label %for.inc 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: br i1 %cmp1, label %if.then, label %for.inc 29*9880d681SAndroid Build Coastguard Worker; CHECK: br i1 false, label %if.then, label %for.inc 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %for.body 32*9880d681SAndroid Build Coastguard Worker %idxprom = sext i32 %i.011 to i64 33*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i32, i32* %b, i64 %idxprom 34*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arrayidx, align 4 35*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %0, 1 36*9880d681SAndroid Build Coastguard Worker %arrayidx3 = getelementptr inbounds i32, i32* %a, i64 %idxprom 37*9880d681SAndroid Build Coastguard Worker store i32 %add, i32* %arrayidx3, align 4 38*9880d681SAndroid Build Coastguard Worker br label %for.inc 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerfor.inc: ; preds = %for.body, %if.then 41*9880d681SAndroid Build Coastguard Worker %inc = add nsw i32 %i.011, 1 42*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %inc, %n 43*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %for.body, label %for.cond.for.cond.cleanup_crit_edge 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 47*9880d681SAndroid Build Coastguard Worker 48