1*9880d681SAndroid Build Coastguard Worker; This (complex) testcase causes an assertion failure because a preheader is 2*9880d681SAndroid Build Coastguard Worker; inserted for the "fail" loop, but the exit block of a loop is not updated 3*9880d681SAndroid Build Coastguard Worker; to be the preheader instead of the exit loop itself. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -loop-simplify 6*9880d681SAndroid Build Coastguard Workerdefine i32 @re_match_2() { 7*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 8*9880d681SAndroid Build Coastguard Workerloopentry.1: ; preds = %endif.82, %0 9*9880d681SAndroid Build Coastguard Worker br label %shortcirc_done.36 10*9880d681SAndroid Build Coastguard Workershortcirc_done.36: ; preds = %loopentry.1 11*9880d681SAndroid Build Coastguard Worker br i1 false, label %fail, label %endif.40 12*9880d681SAndroid Build Coastguard Workerendif.40: ; preds = %shortcirc_done.36 13*9880d681SAndroid Build Coastguard Worker br label %loopexit.20 14*9880d681SAndroid Build Coastguard Workerloopentry.20: ; preds = %endif.46 15*9880d681SAndroid Build Coastguard Worker br label %loopexit.20 16*9880d681SAndroid Build Coastguard Workerloopexit.20: ; preds = %loopentry.20, %endif.40 17*9880d681SAndroid Build Coastguard Worker br label %loopentry.21 18*9880d681SAndroid Build Coastguard Workerloopentry.21: ; preds = %no_exit.19, %loopexit.20 19*9880d681SAndroid Build Coastguard Worker br i1 false, label %no_exit.19, label %loopexit.21 20*9880d681SAndroid Build Coastguard Workerno_exit.19: ; preds = %loopentry.21 21*9880d681SAndroid Build Coastguard Worker br i1 false, label %fail, label %loopentry.21 22*9880d681SAndroid Build Coastguard Workerloopexit.21: ; preds = %loopentry.21 23*9880d681SAndroid Build Coastguard Worker br label %endif.45 24*9880d681SAndroid Build Coastguard Workerendif.45: ; preds = %loopexit.21 25*9880d681SAndroid Build Coastguard Worker br label %cond_true.15 26*9880d681SAndroid Build Coastguard Workercond_true.15: ; preds = %endif.45 27*9880d681SAndroid Build Coastguard Worker br i1 false, label %fail, label %endif.46 28*9880d681SAndroid Build Coastguard Workerendif.46: ; preds = %cond_true.15 29*9880d681SAndroid Build Coastguard Worker br label %loopentry.20 30*9880d681SAndroid Build Coastguard Workerfail: ; preds = %loopexit.37, %cond_true.15, %no_exit.19, %shortcirc_done.36 31*9880d681SAndroid Build Coastguard Worker br label %then.80 32*9880d681SAndroid Build Coastguard Workerthen.80: ; preds = %fail 33*9880d681SAndroid Build Coastguard Worker br label %endif.81 34*9880d681SAndroid Build Coastguard Workerendif.81: ; preds = %then.80 35*9880d681SAndroid Build Coastguard Worker br label %loopexit.37 36*9880d681SAndroid Build Coastguard Workerloopexit.37: ; preds = %endif.81 37*9880d681SAndroid Build Coastguard Worker br i1 false, label %fail, label %endif.82 38*9880d681SAndroid Build Coastguard Workerendif.82: ; preds = %loopexit.37 39*9880d681SAndroid Build Coastguard Worker br label %loopentry.1 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker 43