1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -lcssa -disable-output -verify-dom-info -verify-loop-info 2*9880d681SAndroid Build Coastguard Worker; PR977 3*9880d681SAndroid Build Coastguard Worker; END. 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @opost_block() 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine void @write_chan() { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker br i1 false, label %shortcirc_next.0, label %shortcirc_done.0 9*9880d681SAndroid Build Coastguard Workershortcirc_next.0: ; preds = %entry 10*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.0 11*9880d681SAndroid Build Coastguard Workershortcirc_done.0: ; preds = %shortcirc_next.0, %entry 12*9880d681SAndroid Build Coastguard Worker br i1 false, label %shortcirc_next.1, label %shortcirc_done.1 13*9880d681SAndroid Build Coastguard Workershortcirc_next.1: ; preds = %shortcirc_done.0 14*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.1 15*9880d681SAndroid Build Coastguard Workershortcirc_done.1: ; preds = %shortcirc_next.1, %shortcirc_done.0 16*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.0, label %endif.0 17*9880d681SAndroid Build Coastguard Workerthen.0: ; preds = %shortcirc_done.1 18*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.1, label %endif.1 19*9880d681SAndroid Build Coastguard Workerthen.1: ; preds = %then.0 20*9880d681SAndroid Build Coastguard Worker br label %return 21*9880d681SAndroid Build Coastguard Workerafter_ret.0: ; No predecessors! 22*9880d681SAndroid Build Coastguard Worker br label %endif.1 23*9880d681SAndroid Build Coastguard Workerendif.1: ; preds = %after_ret.0, %then.0 24*9880d681SAndroid Build Coastguard Worker br label %endif.0 25*9880d681SAndroid Build Coastguard Workerendif.0: ; preds = %endif.1, %shortcirc_done.1 26*9880d681SAndroid Build Coastguard Worker br label %loopentry.0 27*9880d681SAndroid Build Coastguard Workerloopentry.0: ; preds = %endif.12, %endif.0 28*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.2, label %endif.2 29*9880d681SAndroid Build Coastguard Workerthen.2: ; preds = %loopentry.0 30*9880d681SAndroid Build Coastguard Worker br label %loopexit.0 31*9880d681SAndroid Build Coastguard Workerdead_block_after_break.0: ; No predecessors! 32*9880d681SAndroid Build Coastguard Worker br label %endif.2 33*9880d681SAndroid Build Coastguard Workerendif.2: ; preds = %dead_block_after_break.0, %loopentry.0 34*9880d681SAndroid Build Coastguard Worker br i1 false, label %shortcirc_done.2, label %shortcirc_next.2 35*9880d681SAndroid Build Coastguard Workershortcirc_next.2: ; preds = %endif.2 36*9880d681SAndroid Build Coastguard Worker br i1 false, label %shortcirc_next.3, label %shortcirc_done.3 37*9880d681SAndroid Build Coastguard Workershortcirc_next.3: ; preds = %shortcirc_next.2 38*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.3 39*9880d681SAndroid Build Coastguard Workershortcirc_done.3: ; preds = %shortcirc_next.3, %shortcirc_next.2 40*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.2 41*9880d681SAndroid Build Coastguard Workershortcirc_done.2: ; preds = %shortcirc_done.3, %endif.2 42*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.3, label %endif.3 43*9880d681SAndroid Build Coastguard Workerthen.3: ; preds = %shortcirc_done.2 44*9880d681SAndroid Build Coastguard Worker br label %loopexit.0 45*9880d681SAndroid Build Coastguard Workerdead_block_after_break.1: ; No predecessors! 46*9880d681SAndroid Build Coastguard Worker br label %endif.3 47*9880d681SAndroid Build Coastguard Workerendif.3: ; preds = %dead_block_after_break.1, %shortcirc_done.2 48*9880d681SAndroid Build Coastguard Worker br i1 false, label %shortcirc_next.4, label %shortcirc_done.4 49*9880d681SAndroid Build Coastguard Workershortcirc_next.4: ; preds = %endif.3 50*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.4 51*9880d681SAndroid Build Coastguard Workershortcirc_done.4: ; preds = %shortcirc_next.4, %endif.3 52*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.4, label %else 53*9880d681SAndroid Build Coastguard Workerthen.4: ; preds = %shortcirc_done.4 54*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 55*9880d681SAndroid Build Coastguard Workerloopentry.1: ; preds = %endif.8, %then.4 56*9880d681SAndroid Build Coastguard Worker br i1 false, label %no_exit, label %loopexit.1 57*9880d681SAndroid Build Coastguard Workerno_exit: ; preds = %loopentry.1 58*9880d681SAndroid Build Coastguard Worker %tmp.94 = call i32 @opost_block( ) ; <i32> [#uses=1] 59*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.5, label %endif.5 60*9880d681SAndroid Build Coastguard Workerthen.5: ; preds = %no_exit 61*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.6, label %endif.6 62*9880d681SAndroid Build Coastguard Workerthen.6: ; preds = %then.5 63*9880d681SAndroid Build Coastguard Worker br label %loopexit.1 64*9880d681SAndroid Build Coastguard Workerdead_block_after_break.2: ; No predecessors! 65*9880d681SAndroid Build Coastguard Worker br label %endif.6 66*9880d681SAndroid Build Coastguard Workerendif.6: ; preds = %dead_block_after_break.2, %then.5 67*9880d681SAndroid Build Coastguard Worker br label %break_out 68*9880d681SAndroid Build Coastguard Workerdead_block_after_goto.0: ; No predecessors! 69*9880d681SAndroid Build Coastguard Worker br label %endif.5 70*9880d681SAndroid Build Coastguard Workerendif.5: ; preds = %dead_block_after_goto.0, %no_exit 71*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.7, label %endif.7 72*9880d681SAndroid Build Coastguard Workerthen.7: ; preds = %endif.5 73*9880d681SAndroid Build Coastguard Worker br label %loopexit.1 74*9880d681SAndroid Build Coastguard Workerdead_block_after_break.3: ; No predecessors! 75*9880d681SAndroid Build Coastguard Worker br label %endif.7 76*9880d681SAndroid Build Coastguard Workerendif.7: ; preds = %dead_block_after_break.3, %endif.5 77*9880d681SAndroid Build Coastguard Worker switch i32 1, label %switchexit [ 78*9880d681SAndroid Build Coastguard Worker i32 4, label %label.2 79*9880d681SAndroid Build Coastguard Worker i32 2, label %label.1 80*9880d681SAndroid Build Coastguard Worker i32 1, label %label.0 81*9880d681SAndroid Build Coastguard Worker ] 82*9880d681SAndroid Build Coastguard Workerlabel.0: ; preds = %endif.7 83*9880d681SAndroid Build Coastguard Worker br label %switchexit 84*9880d681SAndroid Build Coastguard Workerdead_block_after_break.4: ; No predecessors! 85*9880d681SAndroid Build Coastguard Worker br label %label.1 86*9880d681SAndroid Build Coastguard Workerlabel.1: ; preds = %dead_block_after_break.4, %endif.7 87*9880d681SAndroid Build Coastguard Worker br label %switchexit 88*9880d681SAndroid Build Coastguard Workerdead_block_after_break.5: ; No predecessors! 89*9880d681SAndroid Build Coastguard Worker br label %label.2 90*9880d681SAndroid Build Coastguard Workerlabel.2: ; preds = %dead_block_after_break.5, %endif.7 91*9880d681SAndroid Build Coastguard Worker br label %switchexit 92*9880d681SAndroid Build Coastguard Workerdead_block_after_break.6: ; No predecessors! 93*9880d681SAndroid Build Coastguard Worker br label %switchexit 94*9880d681SAndroid Build Coastguard Workerswitchexit: ; preds = %dead_block_after_break.6, %label.2, %label.1, %label.0, %endif.7 95*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.8, label %endif.8 96*9880d681SAndroid Build Coastguard Workerthen.8: ; preds = %switchexit 97*9880d681SAndroid Build Coastguard Worker br label %loopexit.1 98*9880d681SAndroid Build Coastguard Workerdead_block_after_break.7: ; No predecessors! 99*9880d681SAndroid Build Coastguard Worker br label %endif.8 100*9880d681SAndroid Build Coastguard Workerendif.8: ; preds = %dead_block_after_break.7, %switchexit 101*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 102*9880d681SAndroid Build Coastguard Workerloopexit.1: ; preds = %then.8, %then.7, %then.6, %loopentry.1 103*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.9, label %endif.9 104*9880d681SAndroid Build Coastguard Workerthen.9: ; preds = %loopexit.1 105*9880d681SAndroid Build Coastguard Worker br label %endif.9 106*9880d681SAndroid Build Coastguard Workerendif.9: ; preds = %then.9, %loopexit.1 107*9880d681SAndroid Build Coastguard Worker br label %endif.4 108*9880d681SAndroid Build Coastguard Workerelse: ; preds = %shortcirc_done.4 109*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.10, label %endif.10 110*9880d681SAndroid Build Coastguard Workerthen.10: ; preds = %else 111*9880d681SAndroid Build Coastguard Worker br label %break_out 112*9880d681SAndroid Build Coastguard Workerdead_block_after_goto.1: ; No predecessors! 113*9880d681SAndroid Build Coastguard Worker br label %endif.10 114*9880d681SAndroid Build Coastguard Workerendif.10: ; preds = %dead_block_after_goto.1, %else 115*9880d681SAndroid Build Coastguard Worker br label %endif.4 116*9880d681SAndroid Build Coastguard Workerendif.4: ; preds = %endif.10, %endif.9 117*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.11, label %endif.11 118*9880d681SAndroid Build Coastguard Workerthen.11: ; preds = %endif.4 119*9880d681SAndroid Build Coastguard Worker br label %loopexit.0 120*9880d681SAndroid Build Coastguard Workerdead_block_after_break.8: ; No predecessors! 121*9880d681SAndroid Build Coastguard Worker br label %endif.11 122*9880d681SAndroid Build Coastguard Workerendif.11: ; preds = %dead_block_after_break.8, %endif.4 123*9880d681SAndroid Build Coastguard Worker br i1 false, label %then.12, label %endif.12 124*9880d681SAndroid Build Coastguard Workerthen.12: ; preds = %endif.11 125*9880d681SAndroid Build Coastguard Worker br label %loopexit.0 126*9880d681SAndroid Build Coastguard Workerdead_block_after_break.9: ; No predecessors! 127*9880d681SAndroid Build Coastguard Worker br label %endif.12 128*9880d681SAndroid Build Coastguard Workerendif.12: ; preds = %dead_block_after_break.9, %endif.11 129*9880d681SAndroid Build Coastguard Worker br label %loopentry.0 130*9880d681SAndroid Build Coastguard Workerloopexit.0: ; preds = %then.12, %then.11, %then.3, %then.2 131*9880d681SAndroid Build Coastguard Worker br label %break_out 132*9880d681SAndroid Build Coastguard Workerbreak_out: ; preds = %loopexit.0, %then.10, %endif.6 133*9880d681SAndroid Build Coastguard Worker %retval.3 = phi i32 [ 0, %loopexit.0 ], [ %tmp.94, %endif.6 ], [ 0, %then.10 ] ; <i32> [#uses=0] 134*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true, label %cond_false 135*9880d681SAndroid Build Coastguard Workercond_true: ; preds = %break_out 136*9880d681SAndroid Build Coastguard Worker br label %cond_continue 137*9880d681SAndroid Build Coastguard Workercond_false: ; preds = %break_out 138*9880d681SAndroid Build Coastguard Worker br label %cond_continue 139*9880d681SAndroid Build Coastguard Workercond_continue: ; preds = %cond_false, %cond_true 140*9880d681SAndroid Build Coastguard Worker br label %return 141*9880d681SAndroid Build Coastguard Workerafter_ret.1: ; No predecessors! 142*9880d681SAndroid Build Coastguard Worker br label %return 143*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %after_ret.1, %cond_continue, %then.1 144*9880d681SAndroid Build Coastguard Worker ret void 145*9880d681SAndroid Build Coastguard Worker} 146