1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -disable-output 2*9880d681SAndroid Build Coastguard Worker; END. 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" 5*9880d681SAndroid Build Coastguard Workertarget triple = "thumbv7-apple-ios9.0.0" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker%struct.anon = type { %struct.anon.0, i32, i32, %union.T1 } 8*9880d681SAndroid Build Coastguard Worker%struct.anon.0 = type { i32, [256 x i32], [256 x i8] } 9*9880d681SAndroid Build Coastguard Worker%union.T1 = type { %struct.F} 10*9880d681SAndroid Build Coastguard Worker%struct.F = type { i32 } 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker@U = internal global %struct.anon zeroinitializer, align 4 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine void @main() { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @U, i32 0, i32 2), align 4 17*9880d681SAndroid Build Coastguard Worker %cmp.i = icmp eq i32 %0, -1 18*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i, label %if.then, label %if.end 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 21*9880d681SAndroid Build Coastguard Worker br label %if.end 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %entry, %if.then 24*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @U, i32 0, i32 2), align 4 25*9880d681SAndroid Build Coastguard Worker %bf.load = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @U, i32 0, i32 3, i32 0, i32 0), align 4 26*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %0, 0 27*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.end7, label %cond.false 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workercond.false: ; preds = %if.end 30*9880d681SAndroid Build Coastguard Worker %add = and i32 %bf.load, 30 31*9880d681SAndroid Build Coastguard Worker %shl = add nuw nsw i32 %add, 2 32*9880d681SAndroid Build Coastguard Worker br label %if.end7 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerif.end7: ; preds = %if.end, %cond.false 35*9880d681SAndroid Build Coastguard Worker %2 = icmp eq i32 %0, 1 36*9880d681SAndroid Build Coastguard Worker br i1 %2, label %if.then9, label %if.else10 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerif.then9: ; preds = %if.end7 39*9880d681SAndroid Build Coastguard Worker br label %if.end29 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerif.else10: ; preds = %if.end7 42*9880d681SAndroid Build Coastguard Worker %cmp11 = icmp ugt i32 %0, 13 43*9880d681SAndroid Build Coastguard Worker br i1 %cmp11, label %if.then12, label %if.else14 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerif.then12: ; preds = %if.else10 46*9880d681SAndroid Build Coastguard Worker br label %if.end26 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerif.else14: ; preds = %if.else10 49*9880d681SAndroid Build Coastguard Worker %tobool = icmp eq i1 %2, 0 50*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %lor.rhs, label %if.then18 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerlor.rhs: ; preds = %if.else14 53*9880d681SAndroid Build Coastguard Worker %tobool.not.i = icmp eq i1 %2, 0 54*9880d681SAndroid Build Coastguard Worker br i1 %tobool.not.i, label %if.else21, label %if.end.i54 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Workerif.end.i54: ; preds = %lor.rhs 57*9880d681SAndroid Build Coastguard Worker br label %for.cond.i 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerfor.cond.i: ; preds = %if.end6.i, %if.end.i54 60*9880d681SAndroid Build Coastguard Worker %ix.0.i = phi i32 [ 0, %if.end.i54 ], [ %inc.i55, %if.end6.i ] 61*9880d681SAndroid Build Coastguard Worker %ret.0.off0.i = phi i1 [ false, %if.end.i54 ], [ %.ret.0.off0.i, %if.end6.i ] 62*9880d681SAndroid Build Coastguard Worker %cmp2.i = icmp ult i32 %ix.0.i, 2 63*9880d681SAndroid Build Coastguard Worker br i1 %cmp2.i, label %for.body.i, label %TmpSimpleNeedExt.exit 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerfor.body.i: ; preds = %for.cond.i 66*9880d681SAndroid Build Coastguard Worker %arrayidx.i = getelementptr inbounds %struct.anon, %struct.anon* @U, i32 0, i32 0, i32 2, i32 %ix.0.i 67*9880d681SAndroid Build Coastguard Worker %elt = load i8, i8* %arrayidx.i, align 1 68*9880d681SAndroid Build Coastguard Worker %cmp3.i = icmp sgt i8 %elt, 7 69*9880d681SAndroid Build Coastguard Worker br i1 %cmp3.i, label %if.else21, label %if.end6.i 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerif.end6.i: ; preds = %for.body.i 72*9880d681SAndroid Build Coastguard Worker %cmp10.i = icmp ugt i8 %elt, 59 73*9880d681SAndroid Build Coastguard Worker %.ret.0.off0.i = or i1 %ret.0.off0.i, %cmp10.i 74*9880d681SAndroid Build Coastguard Worker %inc.i55 = add i32 %ix.0.i, 1 75*9880d681SAndroid Build Coastguard Worker br label %for.cond.i 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard WorkerTmpSimpleNeedExt.exit: ; preds = %for.body.i 78*9880d681SAndroid Build Coastguard Worker br i1 %ret.0.off0.i, label %if.then18, label %if.else21 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerif.then18: ; preds = %if.else14, %TmpSimpleNeedExt.exit 81*9880d681SAndroid Build Coastguard Worker br label %if.end26 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerif.else21: ; preds = %for.body.i, %lor.rhs, %TmpSimpleNeedExt.exit 84*9880d681SAndroid Build Coastguard Worker br label %if.end26 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerif.end26: ; preds = %if.then18, %if.else21, %if.then12 87*9880d681SAndroid Build Coastguard Worker %cmp.i51 = icmp slt i32 %0, 7 88*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i51, label %if.then.i, label %if.end.i 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerif.then.i: ; preds = %if.end26 91*9880d681SAndroid Build Coastguard Worker br label %if.end.i 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerif.end.i: ; preds = %if.then.i, %if.end26 94*9880d681SAndroid Build Coastguard Worker br label %if.end29 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerif.then2.i: ; preds = %if.end.i 97*9880d681SAndroid Build Coastguard Worker br label %if.end29 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerif.end29: ; preds = %if.end.i, %if.then2.i, %if.then9 100*9880d681SAndroid Build Coastguard Worker ret void 101*9880d681SAndroid Build Coastguard Worker} 102