1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -disable-output 2*9880d681SAndroid Build Coastguard Worker; PR584 3*9880d681SAndroid Build Coastguard Worker@g_38098584 = external global i32 ; <i32*> [#uses=1] 4*9880d681SAndroid Build Coastguard Worker@g_60187400 = external global i32 ; <i32*> [#uses=1] 5*9880d681SAndroid Build Coastguard Worker@g_59182229 = external global i32 ; <i32*> [#uses=2] 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i32 @_Z13func_26556482h(i8 %l_88173906) { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %tmp.1 = bitcast i8 %l_88173906 to i8 ; <i8> [#uses=2] 10*9880d681SAndroid Build Coastguard Worker %tmp.3 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] 11*9880d681SAndroid Build Coastguard Worker br i1 %tmp.3, label %else.0, label %then.0 12*9880d681SAndroid Build Coastguard Workerthen.0: ; preds = %entry 13*9880d681SAndroid Build Coastguard Worker %tmp.5 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker br i1 %tmp.5, label %else.1, label %then.1 15*9880d681SAndroid Build Coastguard Workerthen.1: ; preds = %then.0 16*9880d681SAndroid Build Coastguard Worker br label %return 17*9880d681SAndroid Build Coastguard Workerelse.1: ; preds = %then.0 18*9880d681SAndroid Build Coastguard Worker br label %loopentry.0 19*9880d681SAndroid Build Coastguard Workerloopentry.0: ; preds = %no_exit.0, %else.1 20*9880d681SAndroid Build Coastguard Worker %i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <i32> [#uses=2] 21*9880d681SAndroid Build Coastguard Worker %tmp.9 = icmp sgt i32 %i.0.1, 99 ; <i1> [#uses=1] 22*9880d681SAndroid Build Coastguard Worker br i1 %tmp.9, label %endif.0, label %no_exit.0 23*9880d681SAndroid Build Coastguard Workerno_exit.0: ; preds = %loopentry.0 24*9880d681SAndroid Build Coastguard Worker %inc.0 = add i32 %i.0.1, 1 ; <i32> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker br label %loopentry.0 26*9880d681SAndroid Build Coastguard Workerelse.0: ; preds = %entry 27*9880d681SAndroid Build Coastguard Worker %tmp.12 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] 28*9880d681SAndroid Build Coastguard Worker br label %return 29*9880d681SAndroid Build Coastguard Workerendif.0: ; preds = %loopentry.0 30*9880d681SAndroid Build Coastguard Worker %tmp.14 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] 31*9880d681SAndroid Build Coastguard Worker %tmp.16 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker %tmp.17 = icmp sgt i32 %tmp.14, %tmp.16 ; <i1> [#uses=1] 33*9880d681SAndroid Build Coastguard Worker %tmp.19 = load i32, i32* @g_59182229 ; <i32> [#uses=2] 34*9880d681SAndroid Build Coastguard Worker br i1 %tmp.17, label %cond_true, label %cond_false 35*9880d681SAndroid Build Coastguard Workercond_true: ; preds = %endif.0 36*9880d681SAndroid Build Coastguard Worker %tmp.20 = icmp ne i32 %tmp.19, 1 ; <i1> [#uses=1] 37*9880d681SAndroid Build Coastguard Worker br label %cond_continue 38*9880d681SAndroid Build Coastguard Workercond_false: ; preds = %endif.0 39*9880d681SAndroid Build Coastguard Worker %tmp.22 = icmp ne i32 %tmp.19, 0 ; <i1> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker br label %cond_continue 41*9880d681SAndroid Build Coastguard Workercond_continue: ; preds = %cond_false, %cond_true 42*9880d681SAndroid Build Coastguard Worker %mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <i1> [#uses=1] 43*9880d681SAndroid Build Coastguard Worker br i1 %mem_tmp.0, label %then.2, label %else.2 44*9880d681SAndroid Build Coastguard Workerthen.2: ; preds = %cond_continue 45*9880d681SAndroid Build Coastguard Worker %tmp.25 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] 46*9880d681SAndroid Build Coastguard Worker br label %return 47*9880d681SAndroid Build Coastguard Workerelse.2: ; preds = %cond_continue 48*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 49*9880d681SAndroid Build Coastguard Workerloopentry.1: ; preds = %endif.3, %else.2 50*9880d681SAndroid Build Coastguard Worker %i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <i32> [#uses=2] 51*9880d681SAndroid Build Coastguard Worker %i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <i32> [#uses=2] 52*9880d681SAndroid Build Coastguard Worker %l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <i8> [#uses=3] 53*9880d681SAndroid Build Coastguard Worker %tmp.29 = icmp sgt i32 %i.1.1, 99 ; <i1> [#uses=1] 54*9880d681SAndroid Build Coastguard Worker br i1 %tmp.29, label %endif.2, label %no_exit.1 55*9880d681SAndroid Build Coastguard Workerno_exit.1: ; preds = %loopentry.1 56*9880d681SAndroid Build Coastguard Worker %tmp.30 = load i32, i32* @g_38098584 ; <i32> [#uses=1] 57*9880d681SAndroid Build Coastguard Worker %tmp.31 = icmp eq i32 %tmp.30, 0 ; <i1> [#uses=1] 58*9880d681SAndroid Build Coastguard Worker br i1 %tmp.31, label %else.3, label %then.3 59*9880d681SAndroid Build Coastguard Workerthen.3: ; preds = %no_exit.1 60*9880d681SAndroid Build Coastguard Worker br label %endif.3 61*9880d681SAndroid Build Coastguard Workerelse.3: ; preds = %no_exit.1 62*9880d681SAndroid Build Coastguard Worker br i1 false, label %else.4, label %then.4 63*9880d681SAndroid Build Coastguard Workerthen.4: ; preds = %else.3 64*9880d681SAndroid Build Coastguard Worker br label %endif.3 65*9880d681SAndroid Build Coastguard Workerelse.4: ; preds = %else.3 66*9880d681SAndroid Build Coastguard Worker br i1 false, label %else.5, label %then.5 67*9880d681SAndroid Build Coastguard Workerthen.5: ; preds = %else.4 68*9880d681SAndroid Build Coastguard Worker store i32 -1004318825, i32* @g_59182229 69*9880d681SAndroid Build Coastguard Worker br label %return 70*9880d681SAndroid Build Coastguard Workerelse.5: ; preds = %else.4 71*9880d681SAndroid Build Coastguard Worker br label %loopentry.3 72*9880d681SAndroid Build Coastguard Workerloopentry.3: ; preds = %then.7, %else.5 73*9880d681SAndroid Build Coastguard Worker %i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <i32> [#uses=3] 74*9880d681SAndroid Build Coastguard Worker %tmp.55 = icmp sgt i32 %i.3.3, 99 ; <i1> [#uses=1] 75*9880d681SAndroid Build Coastguard Worker br i1 %tmp.55, label %endif.3, label %no_exit.3 76*9880d681SAndroid Build Coastguard Workerno_exit.3: ; preds = %loopentry.3 77*9880d681SAndroid Build Coastguard Worker %tmp.57 = icmp eq i8 %l_88173906_addr.1, 0 ; <i1> [#uses=1] 78*9880d681SAndroid Build Coastguard Worker br i1 %tmp.57, label %else.7, label %then.7 79*9880d681SAndroid Build Coastguard Workerthen.7: ; preds = %no_exit.3 80*9880d681SAndroid Build Coastguard Worker store i32 16239, i32* @g_60187400 81*9880d681SAndroid Build Coastguard Worker %inc.2 = add i32 %i.3.3, 1 ; <i32> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker br label %loopentry.3 83*9880d681SAndroid Build Coastguard Workerelse.7: ; preds = %no_exit.3 84*9880d681SAndroid Build Coastguard Worker br label %return 85*9880d681SAndroid Build Coastguard Workerendif.3: ; preds = %loopentry.3, %then.4, %then.3 86*9880d681SAndroid Build Coastguard Worker %i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <i32> [#uses=1] 87*9880d681SAndroid Build Coastguard Worker %l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <i8> [#uses=1] 88*9880d681SAndroid Build Coastguard Worker %inc.3 = add i32 %i.1.1, 1 ; <i32> [#uses=1] 89*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 90*9880d681SAndroid Build Coastguard Workerendif.2: ; preds = %loopentry.1 91*9880d681SAndroid Build Coastguard Worker br label %return 92*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1 93*9880d681SAndroid Build Coastguard Worker %result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <i32> [#uses=1] 94*9880d681SAndroid Build Coastguard Worker ret i32 %result.0 95*9880d681SAndroid Build Coastguard Worker} 96