1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -jump-threading -disable-output 2*9880d681SAndroid Build Coastguard Worker; PR2285 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" 4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu" 5*9880d681SAndroid Build Coastguard Worker %struct.system__secondary_stack__mark_id = type { i64, i64 } 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine void @_ada_c35507b() { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker br label %bb 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb13, %entry 12*9880d681SAndroid Build Coastguard Worker %ch.0 = phi i8 [ 0, %entry ], [ 0, %bb13 ] ; <i8> [#uses=1] 13*9880d681SAndroid Build Coastguard Worker %tmp11 = icmp ugt i8 %ch.0, 31 ; <i1> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker %tmp120 = call %struct.system__secondary_stack__mark_id @system__secondary_stack__ss_mark( ) ; <%struct.system__secondary_stack__mark_id> [#uses=1] 15*9880d681SAndroid Build Coastguard Worker br i1 %tmp11, label %bb110, label %bb13 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb 18*9880d681SAndroid Build Coastguard Worker br label %bb 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerbb110: ; preds = %bb 21*9880d681SAndroid Build Coastguard Worker %mrv_gr124 = extractvalue %struct.system__secondary_stack__mark_id %tmp120, 1 ; <i64> [#uses=0] 22*9880d681SAndroid Build Coastguard Worker unreachable 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdeclare %struct.system__secondary_stack__mark_id @system__secondary_stack__ss_mark() 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine fastcc void @findratio(double* nocapture %res1, double* nocapture %res2) nounwind ssp { 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker br label %bb12 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb6.us: 34*9880d681SAndroid Build Coastguard Worker %tmp = icmp eq i32 undef, undef 35*9880d681SAndroid Build Coastguard Worker %tmp1 = fsub double undef, undef 36*9880d681SAndroid Build Coastguard Worker %tmp2 = fcmp ult double %tmp1, 0.000000e+00 37*9880d681SAndroid Build Coastguard Worker br i1 %tmp, label %bb6.us, label %bb13 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerbb12: 41*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult double undef, 0.000000e+00 42*9880d681SAndroid Build Coastguard Worker br label %bb13 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerbb13: 45*9880d681SAndroid Build Coastguard Worker %.lcssa31 = phi double [ undef, %bb12 ], [ %tmp1, %bb6.us ] 46*9880d681SAndroid Build Coastguard Worker %.lcssa30 = phi i1 [ %tmp3, %bb12 ], [ %tmp2, %bb6.us ] 47*9880d681SAndroid Build Coastguard Worker br i1 %.lcssa30, label %bb15, label %bb61 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerbb15: 50*9880d681SAndroid Build Coastguard Worker %tmp4 = fsub double -0.000000e+00, %.lcssa31 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerbb61: 55*9880d681SAndroid Build Coastguard Worker ret void 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker; PR5258 60*9880d681SAndroid Build Coastguard Workerdefine i32 @test(i1 %cond, i1 %cond2, i32 %a) { 61*9880d681SAndroid Build Coastguard WorkerA: 62*9880d681SAndroid Build Coastguard Worker br i1 %cond, label %F, label %A1 63*9880d681SAndroid Build Coastguard WorkerF: 64*9880d681SAndroid Build Coastguard Worker br label %A1 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard WorkerA1: 67*9880d681SAndroid Build Coastguard Worker %d = phi i1 [false, %A], [true, %F] 68*9880d681SAndroid Build Coastguard Worker %e = add i32 %a, %a 69*9880d681SAndroid Build Coastguard Worker br i1 %d, label %B, label %G 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard WorkerG: 72*9880d681SAndroid Build Coastguard Worker br i1 %cond2, label %B, label %D 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard WorkerB: 75*9880d681SAndroid Build Coastguard Worker %f = phi i32 [%e, %G], [%e, %A1] 76*9880d681SAndroid Build Coastguard Worker %b = add i32 0, 0 77*9880d681SAndroid Build Coastguard Worker switch i32 %a, label %C [ 78*9880d681SAndroid Build Coastguard Worker i32 7, label %D 79*9880d681SAndroid Build Coastguard Worker i32 8, label %D 80*9880d681SAndroid Build Coastguard Worker i32 9, label %D 81*9880d681SAndroid Build Coastguard Worker ] 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard WorkerC: 84*9880d681SAndroid Build Coastguard Worker br label %D 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard WorkerD: 87*9880d681SAndroid Build Coastguard Worker %c = phi i32 [%e, %B], [%e, %B], [%e, %B], [%f, %C], [%e, %G] 88*9880d681SAndroid Build Coastguard Worker ret i32 %c 89*9880d681SAndroid Build Coastguard WorkerE: 90*9880d681SAndroid Build Coastguard Worker ret i32 412 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerdefine i32 @test2() nounwind { 95*9880d681SAndroid Build Coastguard Workerentry: 96*9880d681SAndroid Build Coastguard Worker br i1 true, label %decDivideOp.exit, label %bb7.i 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerbb7.i: ; preds = %bb7.i, %entry 99*9880d681SAndroid Build Coastguard Worker br label %bb7.i 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard WorkerdecDivideOp.exit: ; preds = %entry 102*9880d681SAndroid Build Coastguard Worker ret i32 undef 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker; PR3298 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerdefine i32 @test3(i32 %p_79, i32 %p_80) nounwind { 109*9880d681SAndroid Build Coastguard Workerentry: 110*9880d681SAndroid Build Coastguard Worker br label %bb7 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Workerbb1: ; preds = %bb2 113*9880d681SAndroid Build Coastguard Worker br label %bb2 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb7, %bb1 116*9880d681SAndroid Build Coastguard Worker %l_82.0 = phi i8 [ 0, %bb1 ], [ %l_82.1, %bb7 ] ; <i8> [#uses=3] 117*9880d681SAndroid Build Coastguard Worker br i1 true, label %bb3, label %bb1 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Workerbb3: ; preds = %bb2 120*9880d681SAndroid Build Coastguard Worker %0 = icmp eq i32 %p_80_addr.1, 0 ; <i1> [#uses=1] 121*9880d681SAndroid Build Coastguard Worker br i1 %0, label %bb7, label %bb6 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %bb6 124*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i8 %l_82.0, 0 ; <i1> [#uses=1] 125*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1.i, label %bb.i 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerbb.i: ; preds = %bb5 128*9880d681SAndroid Build Coastguard Worker br label %safe_div_func_char_s_s.exit 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Workerbb1.i: ; preds = %bb5 131*9880d681SAndroid Build Coastguard Worker br label %safe_div_func_char_s_s.exit 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workersafe_div_func_char_s_s.exit: ; preds = %bb1.i, %bb.i 134*9880d681SAndroid Build Coastguard Worker br label %bb6 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerbb6: ; preds = %safe_div_func_char_s_s.exit, %bb3 137*9880d681SAndroid Build Coastguard Worker %p_80_addr.0 = phi i32 [ %p_80_addr.1, %bb3 ], [ 1, %safe_div_func_char_s_s.exit ] ; <i32> [#uses=2] 138*9880d681SAndroid Build Coastguard Worker %2 = icmp eq i32 %p_80_addr.0, 0 ; <i1> [#uses=1] 139*9880d681SAndroid Build Coastguard Worker br i1 %2, label %bb7, label %bb5 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerbb7: ; preds = %bb6, %bb3, %entry 142*9880d681SAndroid Build Coastguard Worker %l_82.1 = phi i8 [ 1, %entry ], [ %l_82.0, %bb3 ], [ %l_82.0, %bb6 ] ; <i8> [#uses=2] 143*9880d681SAndroid Build Coastguard Worker %p_80_addr.1 = phi i32 [ 0, %entry ], [ %p_80_addr.1, %bb3 ], [ %p_80_addr.0, %bb6 ] ; <i32> [#uses=4] 144*9880d681SAndroid Build Coastguard Worker %3 = icmp eq i32 %p_80_addr.1, 0 ; <i1> [#uses=1] 145*9880d681SAndroid Build Coastguard Worker br i1 %3, label %bb8, label %bb2 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Workerbb8: ; preds = %bb7 148*9880d681SAndroid Build Coastguard Worker %4 = sext i8 %l_82.1 to i32 ; <i32> [#uses=0] 149*9880d681SAndroid Build Coastguard Worker ret i32 0 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; PR3353 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Workerdefine i32 @test4(i8 %X) { 156*9880d681SAndroid Build Coastguard Workerentry: 157*9880d681SAndroid Build Coastguard Worker %Y = add i8 %X, 1 158*9880d681SAndroid Build Coastguard Worker %Z = add i8 %Y, 1 159*9880d681SAndroid Build Coastguard Worker br label %bb33.i 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Workerbb33.i: ; preds = %bb33.i, %bb32.i 162*9880d681SAndroid Build Coastguard Worker switch i8 %Y, label %bb32.i [ 163*9880d681SAndroid Build Coastguard Worker i8 39, label %bb35.split.i 164*9880d681SAndroid Build Coastguard Worker i8 13, label %bb33.i 165*9880d681SAndroid Build Coastguard Worker ] 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerbb35.split.i: 168*9880d681SAndroid Build Coastguard Worker ret i32 5 169*9880d681SAndroid Build Coastguard Workerbb32.i: 170*9880d681SAndroid Build Coastguard Worker ret i32 1 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerdefine fastcc void @test5(i1 %tmp, i32 %tmp1) nounwind ssp { 175*9880d681SAndroid Build Coastguard Workerentry: 176*9880d681SAndroid Build Coastguard Worker br i1 %tmp, label %bb12, label %bb13 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Workerbb12: 180*9880d681SAndroid Build Coastguard Worker br label %bb13 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Workerbb13: 183*9880d681SAndroid Build Coastguard Worker %.lcssa31 = phi i32 [ undef, %bb12 ], [ %tmp1, %entry ] 184*9880d681SAndroid Build Coastguard Worker %A = and i1 undef, undef 185*9880d681SAndroid Build Coastguard Worker br i1 %A, label %bb15, label %bb61 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Workerbb15: 188*9880d681SAndroid Build Coastguard Worker ret void 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerbb61: 192*9880d681SAndroid Build Coastguard Worker ret void 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Worker; PR5640 197*9880d681SAndroid Build Coastguard Workerdefine fastcc void @test6(i1 %tmp, i1 %tmp1) nounwind ssp { 198*9880d681SAndroid Build Coastguard Workerentry: 199*9880d681SAndroid Build Coastguard Worker br i1 %tmp, label %bb12, label %bb14 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Workerbb12: 202*9880d681SAndroid Build Coastguard Worker br label %bb14 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Workerbb14: 205*9880d681SAndroid Build Coastguard Worker %A = phi i1 [ %A, %bb13 ], [ true, %bb12 ], [%tmp1, %entry] 206*9880d681SAndroid Build Coastguard Worker br label %bb13 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerbb13: 209*9880d681SAndroid Build Coastguard Worker br i1 %A, label %bb14, label %bb61 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerbb61: 213*9880d681SAndroid Build Coastguard Worker ret void 214*9880d681SAndroid Build Coastguard Worker} 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker; PR5698 218*9880d681SAndroid Build Coastguard Workerdefine void @test7(i32 %x) { 219*9880d681SAndroid Build Coastguard Workerentry: 220*9880d681SAndroid Build Coastguard Worker br label %tailrecurse 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workertailrecurse: 223*9880d681SAndroid Build Coastguard Worker switch i32 %x, label %return [ 224*9880d681SAndroid Build Coastguard Worker i32 2, label %bb2 225*9880d681SAndroid Build Coastguard Worker i32 3, label %bb 226*9880d681SAndroid Build Coastguard Worker ] 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerbb: 229*9880d681SAndroid Build Coastguard Worker switch i32 %x, label %return [ 230*9880d681SAndroid Build Coastguard Worker i32 2, label %bb2 231*9880d681SAndroid Build Coastguard Worker i32 3, label %tailrecurse 232*9880d681SAndroid Build Coastguard Worker ] 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerbb2: 235*9880d681SAndroid Build Coastguard Worker ret void 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Workerreturn: 238*9880d681SAndroid Build Coastguard Worker ret void 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker; PR6119 242*9880d681SAndroid Build Coastguard Workerdefine i32 @test8(i32 %action) nounwind { 243*9880d681SAndroid Build Coastguard Workerentry: 244*9880d681SAndroid Build Coastguard Worker switch i32 %action, label %lor.rhs [ 245*9880d681SAndroid Build Coastguard Worker i32 1, label %if.then 246*9880d681SAndroid Build Coastguard Worker i32 0, label %lor.end 247*9880d681SAndroid Build Coastguard Worker ] 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %for.cond, %lor.end, %entry 250*9880d681SAndroid Build Coastguard Worker ret i32 undef 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Workerlor.rhs: ; preds = %entry 253*9880d681SAndroid Build Coastguard Worker br label %lor.end 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerlor.end: ; preds = %lor.rhs, %entry 256*9880d681SAndroid Build Coastguard Worker %cmp103 = xor i1 undef, undef ; <i1> [#uses=1] 257*9880d681SAndroid Build Coastguard Worker br i1 %cmp103, label %for.cond, label %if.then 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Workerfor.cond: ; preds = %for.body, %lor.end 260*9880d681SAndroid Build Coastguard Worker br i1 undef, label %if.then, label %for.body 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerfor.body: ; preds = %for.cond 263*9880d681SAndroid Build Coastguard Worker br label %for.cond 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Worker; PR6119 267*9880d681SAndroid Build Coastguard Workerdefine i32 @test9(i32 %action) nounwind { 268*9880d681SAndroid Build Coastguard Workerentry: 269*9880d681SAndroid Build Coastguard Worker switch i32 %action, label %lor.rhs [ 270*9880d681SAndroid Build Coastguard Worker i32 1, label %if.then 271*9880d681SAndroid Build Coastguard Worker i32 0, label %lor.end 272*9880d681SAndroid Build Coastguard Worker ] 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %for.cond, %lor.end, %entry 275*9880d681SAndroid Build Coastguard Worker ret i32 undef 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Workerlor.rhs: ; preds = %entry 278*9880d681SAndroid Build Coastguard Worker br label %lor.end 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Workerlor.end: ; preds = %lor.rhs, %entry 281*9880d681SAndroid Build Coastguard Worker %0 = phi i1 [ undef, %lor.rhs ], [ true, %entry ] ; <i1> [#uses=1] 282*9880d681SAndroid Build Coastguard Worker %cmp103 = xor i1 undef, %0 ; <i1> [#uses=1] 283*9880d681SAndroid Build Coastguard Worker br i1 %cmp103, label %for.cond, label %if.then 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Workerfor.cond: ; preds = %for.body, %lor.end 286*9880d681SAndroid Build Coastguard Worker br i1 undef, label %if.then, label %for.body 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Workerfor.body: ; preds = %for.cond 289*9880d681SAndroid Build Coastguard Worker br label %for.cond 290*9880d681SAndroid Build Coastguard Worker} 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker; PR6119 293*9880d681SAndroid Build Coastguard Workerdefine i32 @test10(i32 %action, i32 %type) nounwind { 294*9880d681SAndroid Build Coastguard Workerentry: 295*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp eq i32 %type, 0 ; <i1> [#uses=1] 296*9880d681SAndroid Build Coastguard Worker switch i32 %action, label %lor.rhs [ 297*9880d681SAndroid Build Coastguard Worker i32 1, label %if.then 298*9880d681SAndroid Build Coastguard Worker i32 0, label %lor.end 299*9880d681SAndroid Build Coastguard Worker ] 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %for.cond, %lor.end, %entry 302*9880d681SAndroid Build Coastguard Worker ret i32 undef 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerlor.rhs: ; preds = %entry 305*9880d681SAndroid Build Coastguard Worker %cmp101 = icmp eq i32 %action, 2 ; <i1> [#uses=1] 306*9880d681SAndroid Build Coastguard Worker br label %lor.end 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Workerlor.end: ; preds = %lor.rhs, %entry 309*9880d681SAndroid Build Coastguard Worker %0 = phi i1 [ %cmp101, %lor.rhs ], [ true, %entry ] ; <i1> [#uses=1] 310*9880d681SAndroid Build Coastguard Worker %cmp103 = xor i1 %cmp2, %0 ; <i1> [#uses=1] 311*9880d681SAndroid Build Coastguard Worker br i1 %cmp103, label %for.cond, label %if.then 312*9880d681SAndroid Build Coastguard Worker 313*9880d681SAndroid Build Coastguard Workerfor.cond: ; preds = %for.body, %lor.end 314*9880d681SAndroid Build Coastguard Worker br i1 undef, label %if.then, label %for.body 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Workerfor.body: ; preds = %for.cond 317*9880d681SAndroid Build Coastguard Worker br label %for.cond 318*9880d681SAndroid Build Coastguard Worker} 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Worker; PR6305 322*9880d681SAndroid Build Coastguard Workerdefine void @test11() nounwind { 323*9880d681SAndroid Build Coastguard Workerentry: 324*9880d681SAndroid Build Coastguard Worker br label %A 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard WorkerA: ; preds = %entry 327*9880d681SAndroid Build Coastguard Worker call void undef(i64 ptrtoint (i8* blockaddress(@test11, %A) to i64)) nounwind 328*9880d681SAndroid Build Coastguard Worker unreachable 329*9880d681SAndroid Build Coastguard Worker} 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Worker; PR6743 332*9880d681SAndroid Build Coastguard Workerdefine void @test12() nounwind ssp { 333*9880d681SAndroid Build Coastguard Workerentry: 334*9880d681SAndroid Build Coastguard Worker br label %lbl_51 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerlbl_51: ; preds = %if.then, %entry 337*9880d681SAndroid Build Coastguard Worker %tmp3 = phi i1 [ false, %if.then ], [ undef, %entry ] ; <i1> [#uses=2] 338*9880d681SAndroid Build Coastguard Worker br i1 %tmp3, label %if.end12, label %if.then 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %lbl_51 341*9880d681SAndroid Build Coastguard Worker br i1 %tmp3, label %lbl_51, label %if.end12 342*9880d681SAndroid Build Coastguard Worker 343*9880d681SAndroid Build Coastguard Workerif.end12: ; preds = %if.then, %lbl_51 344*9880d681SAndroid Build Coastguard Worker ret void 345*9880d681SAndroid Build Coastguard Worker} 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Worker 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker; PR7356 350*9880d681SAndroid Build Coastguard Workerdefine i32 @test13(i32* %P, i8* %Ptr) { 351*9880d681SAndroid Build Coastguard Workerentry: 352*9880d681SAndroid Build Coastguard Worker indirectbr i8* %Ptr, [label %BrBlock, label %B2] 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard WorkerB2: 355*9880d681SAndroid Build Coastguard Worker store i32 4, i32 *%P 356*9880d681SAndroid Build Coastguard Worker br label %BrBlock 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard WorkerBrBlock: 359*9880d681SAndroid Build Coastguard Worker %L = load i32, i32* %P 360*9880d681SAndroid Build Coastguard Worker %C = icmp eq i32 %L, 42 361*9880d681SAndroid Build Coastguard Worker br i1 %C, label %T, label %F 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard WorkerT: 364*9880d681SAndroid Build Coastguard Worker ret i32 123 365*9880d681SAndroid Build Coastguard WorkerF: 366*9880d681SAndroid Build Coastguard Worker ret i32 1422 367*9880d681SAndroid Build Coastguard Worker} 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Worker 370*9880d681SAndroid Build Coastguard Worker; PR7498 371*9880d681SAndroid Build Coastguard Workerdefine void @test14() nounwind { 372*9880d681SAndroid Build Coastguard Workerentry: 373*9880d681SAndroid Build Coastguard Worker %cmp33 = icmp slt i8 undef, 0 ; <i1> [#uses=1] 374*9880d681SAndroid Build Coastguard Worker %tobool = icmp eq i8 undef, 0 ; <i1> [#uses=1] 375*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %land.end69, label %land.rhs 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Workerland.rhs: ; preds = %entry 378*9880d681SAndroid Build Coastguard Worker br label %land.end69 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerland.end69: ; preds = %land.rhs, %entry 381*9880d681SAndroid Build Coastguard Worker %0 = phi i1 [ undef, %land.rhs ], [ true, %entry ] ; <i1> [#uses=1] 382*9880d681SAndroid Build Coastguard Worker %cmp71 = or i1 true, %0 ; <i1> [#uses=1] 383*9880d681SAndroid Build Coastguard Worker %cmp73 = xor i1 %cmp33, %cmp71 ; <i1> [#uses=1] 384*9880d681SAndroid Build Coastguard Worker br i1 %cmp73, label %if.then, label %if.end 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %land.end69 387*9880d681SAndroid Build Coastguard Worker ret void 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %land.end69 390*9880d681SAndroid Build Coastguard Worker ret void 391*9880d681SAndroid Build Coastguard Worker} 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Worker; PR7647 394*9880d681SAndroid Build Coastguard Workerdefine void @test15() nounwind { 395*9880d681SAndroid Build Coastguard Workerentry: 396*9880d681SAndroid Build Coastguard Worker ret void 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Workerif.then237: 399*9880d681SAndroid Build Coastguard Worker br label %lbl_664 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Workerlbl_596: ; preds = %lbl_664, %for.end37 402*9880d681SAndroid Build Coastguard Worker store volatile i64 undef, i64* undef, align 4 403*9880d681SAndroid Build Coastguard Worker br label %for.cond111 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Workerfor.cond111: ; preds = %safe_sub_func_int64_t_s_s.exit, %lbl_596 406*9880d681SAndroid Build Coastguard Worker %storemerge = phi i8 [ undef, %cond.true.i100 ], [ 22, %lbl_596 ] ; <i8> [#uses=1] 407*9880d681SAndroid Build Coastguard Worker %l_678.5 = phi i64 [ %l_678.3, %cond.true.i100 ], [ undef, %lbl_596 ] ; <i64> [#uses=2] 408*9880d681SAndroid Build Coastguard Worker %cmp114 = icmp slt i8 %storemerge, -2 ; <i1> [#uses=1] 409*9880d681SAndroid Build Coastguard Worker br i1 %cmp114, label %lbl_664, label %if.end949 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerlbl_664: ; preds = %for.end1058, %if.then237, %for.cond111 412*9880d681SAndroid Build Coastguard Worker %l_678.3 = phi i64 [ %l_678.5, %for.cond111 ], [ %l_678.2, %for.cond1035 ], [ 5, %if.then237 ] ; <i64> [#uses=1] 413*9880d681SAndroid Build Coastguard Worker %tobool118 = icmp eq i32 undef, 0 ; <i1> [#uses=1] 414*9880d681SAndroid Build Coastguard Worker br i1 %tobool118, label %cond.true.i100, label %lbl_596 415*9880d681SAndroid Build Coastguard Worker 416*9880d681SAndroid Build Coastguard Workercond.true.i100: ; preds = %for.inc120 417*9880d681SAndroid Build Coastguard Worker br label %for.cond111 418*9880d681SAndroid Build Coastguard Worker 419*9880d681SAndroid Build Coastguard Workerlbl_709: 420*9880d681SAndroid Build Coastguard Worker br label %if.end949 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerfor.cond603: ; preds = %for.body607, %if.end336 423*9880d681SAndroid Build Coastguard Worker br i1 undef, label %for.cond603, label %if.end949 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Workerif.end949: ; preds = %for.cond603, %lbl_709, %for.cond111 426*9880d681SAndroid Build Coastguard Worker %l_678.2 = phi i64 [ %l_678.5, %for.cond111 ], [ undef, %lbl_709 ], [ 5, %for.cond603 ] ; <i64> [#uses=1] 427*9880d681SAndroid Build Coastguard Worker br label %for.body1016 428*9880d681SAndroid Build Coastguard Worker 429*9880d681SAndroid Build Coastguard Workerfor.body1016: ; preds = %for.cond1012 430*9880d681SAndroid Build Coastguard Worker br label %for.body1016 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Workerfor.cond1035: ; preds = %for.inc1055, %if.then1026 433*9880d681SAndroid Build Coastguard Worker br i1 undef, label %for.cond1040, label %lbl_664 434*9880d681SAndroid Build Coastguard Worker 435*9880d681SAndroid Build Coastguard Workerfor.cond1040: ; preds = %for.body1044, %for.cond1035 436*9880d681SAndroid Build Coastguard Worker ret void 437*9880d681SAndroid Build Coastguard Worker} 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker; PR7755 440*9880d681SAndroid Build Coastguard Workerdefine void @test16(i1 %c, i1 %c2, i1 %c3, i1 %c4) nounwind ssp { 441*9880d681SAndroid Build Coastguard Workerentry: 442*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 undef, 1 ; <i1> [#uses=1] 443*9880d681SAndroid Build Coastguard Worker br i1 %c, label %land.end, label %land.rhs 444*9880d681SAndroid Build Coastguard Worker 445*9880d681SAndroid Build Coastguard Workerland.rhs: ; preds = %entry 446*9880d681SAndroid Build Coastguard Worker br i1 %c2, label %lor.lhs.false.i, label %land.end 447*9880d681SAndroid Build Coastguard Worker 448*9880d681SAndroid Build Coastguard Workerlor.lhs.false.i: ; preds = %land.rhs 449*9880d681SAndroid Build Coastguard Worker br i1 %c3, label %land.end, label %land.end 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Workerland.end: 452*9880d681SAndroid Build Coastguard Worker %0 = phi i1 [ true, %entry ], [ false, %land.rhs ], [false, %lor.lhs.false.i], [false, %lor.lhs.false.i] ; <i1> [#uses=1] 453*9880d681SAndroid Build Coastguard Worker %cmp12 = and i1 %cmp, %0 454*9880d681SAndroid Build Coastguard Worker %xor1 = xor i1 %cmp12, %c4 455*9880d681SAndroid Build Coastguard Worker br i1 %xor1, label %if.then, label %if.end 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Workerif.then: 458*9880d681SAndroid Build Coastguard Worker ret void 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Workerif.end: 461*9880d681SAndroid Build Coastguard Worker ret void 462*9880d681SAndroid Build Coastguard Worker} 463*9880d681SAndroid Build Coastguard Worker 464*9880d681SAndroid Build Coastguard Workerdefine void @test17() { 465*9880d681SAndroid Build Coastguard Workerentry: 466*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb269.us.us, label %bb269.us.us.us 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Workerbb269.us.us.us: 469*9880d681SAndroid Build Coastguard Worker %indvar = phi i64 [ %indvar.next, %bb287.us.us.us ], [ 0, %entry ] 470*9880d681SAndroid Build Coastguard Worker %0 = icmp eq i16 undef, 0 471*9880d681SAndroid Build Coastguard Worker br i1 %0, label %bb287.us.us.us, label %bb286.us.us.us 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerbb287.us.us.us: 474*9880d681SAndroid Build Coastguard Worker %indvar.next = add i64 %indvar, 1 475*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i64 %indvar.next, 4 476*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %bb288.bb289.loopexit_crit_edge, label %bb269.us.us.us 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Workerbb286.us.us.us: 479*9880d681SAndroid Build Coastguard Worker unreachable 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Workerbb269.us.us: 482*9880d681SAndroid Build Coastguard Worker unreachable 483*9880d681SAndroid Build Coastguard Worker 484*9880d681SAndroid Build Coastguard Workerbb288.bb289.loopexit_crit_edge: 485*9880d681SAndroid Build Coastguard Worker unreachable 486*9880d681SAndroid Build Coastguard Worker} 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Worker; PR 8247 489*9880d681SAndroid Build Coastguard Worker%struct.S1 = type { i8, i8 } 490*9880d681SAndroid Build Coastguard Worker@func_89.l_245 = internal constant %struct.S1 { i8 33, i8 6 }, align 1 491*9880d681SAndroid Build Coastguard Workerdefine void @func_89(i16 zeroext %p_90, %struct.S1* nocapture %p_91, i32* nocapture %p_92) nounwind ssp { 492*9880d681SAndroid Build Coastguard Workerentry: 493*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %p_92, align 4 494*9880d681SAndroid Build Coastguard Worker br i1 false, label %lbl_260, label %if.else 495*9880d681SAndroid Build Coastguard Worker 496*9880d681SAndroid Build Coastguard Workerif.else: ; preds = %entry 497*9880d681SAndroid Build Coastguard Worker br label %for.cond 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Workerfor.cond: ; preds = %lbl_260, %if.else 500*9880d681SAndroid Build Coastguard Worker %l_245.0 = phi i16 [ %l_245.1, %lbl_260 ], [ 33, %if.else ] 501*9880d681SAndroid Build Coastguard Worker %l_261.0 = phi i32 [ %and, %lbl_260 ], [ 255, %if.else ] 502*9880d681SAndroid Build Coastguard Worker %tobool21 = icmp ult i16 %l_245.0, 256 503*9880d681SAndroid Build Coastguard Worker br i1 %tobool21, label %if.end, label %lbl_260 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerlbl_260: ; preds = %for.cond, %entry 506*9880d681SAndroid Build Coastguard Worker %l_245.1 = phi i16 [ 1569, %entry ], [ %l_245.0, %for.cond ] 507*9880d681SAndroid Build Coastguard Worker %l_261.1 = phi i32 [ 255, %entry ], [ %l_261.0, %for.cond ] 508*9880d681SAndroid Build Coastguard Worker %and = and i32 %l_261.1, 1 509*9880d681SAndroid Build Coastguard Worker br label %for.cond 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %for.cond 512*9880d681SAndroid Build Coastguard Worker ret void 513*9880d681SAndroid Build Coastguard Worker} 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Workerdefine void @PR14233(i1 %cmp, i1 %cmp2, i1 %cmp3, i1 %cmp4) { 516*9880d681SAndroid Build Coastguard Workerentry: 517*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %cond.true, label %cond.false 518*9880d681SAndroid Build Coastguard Worker 519*9880d681SAndroid Build Coastguard Workercond.true: 520*9880d681SAndroid Build Coastguard Worker br label %if.end 521*9880d681SAndroid Build Coastguard Worker 522*9880d681SAndroid Build Coastguard Workercond.false: 523*9880d681SAndroid Build Coastguard Worker br label %if.end 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Workerif.end: 526*9880d681SAndroid Build Coastguard Worker %A = phi i64 [ 0, %cond.true ], [ 1, %cond.false ] 527*9880d681SAndroid Build Coastguard Worker br i1 %cmp2, label %bb, label %if.end2 528*9880d681SAndroid Build Coastguard Worker 529*9880d681SAndroid Build Coastguard Workerbb: 530*9880d681SAndroid Build Coastguard Worker br label %if.end2 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Workerif.end2: 533*9880d681SAndroid Build Coastguard Worker %B = phi i64 [ ptrtoint (i8* ()* @PR14233.f1 to i64), %bb ], [ %A, %if.end ] 534*9880d681SAndroid Build Coastguard Worker %cmp.ptr = icmp eq i64 %B, ptrtoint (i8* ()* @PR14233.f2 to i64) 535*9880d681SAndroid Build Coastguard Worker br i1 %cmp.ptr, label %cond.true2, label %if.end3 536*9880d681SAndroid Build Coastguard Worker 537*9880d681SAndroid Build Coastguard Workercond.true2: 538*9880d681SAndroid Build Coastguard Worker br i1 %cmp3, label %bb2, label %ur 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerbb2: 541*9880d681SAndroid Build Coastguard Worker br i1 %cmp4, label %if.end4, label %if.end3 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Workerif.end4: 544*9880d681SAndroid Build Coastguard Worker unreachable 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Workerif.end3: 547*9880d681SAndroid Build Coastguard Worker %cmp.ptr2 = icmp eq i64 %B, ptrtoint (i8* ()* @PR14233.f2 to i64) 548*9880d681SAndroid Build Coastguard Worker br i1 %cmp.ptr2, label %ur, label %if.then601 549*9880d681SAndroid Build Coastguard Worker 550*9880d681SAndroid Build Coastguard Workerif.then601: 551*9880d681SAndroid Build Coastguard Worker %C = icmp eq i64 %B, 0 552*9880d681SAndroid Build Coastguard Worker br i1 %C, label %bb3, label %bb4 553*9880d681SAndroid Build Coastguard Worker 554*9880d681SAndroid Build Coastguard Workerbb3: 555*9880d681SAndroid Build Coastguard Worker unreachable 556*9880d681SAndroid Build Coastguard Worker 557*9880d681SAndroid Build Coastguard Workerbb4: 558*9880d681SAndroid Build Coastguard Worker unreachable 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Workerur: 561*9880d681SAndroid Build Coastguard Worker unreachable 562*9880d681SAndroid Build Coastguard Worker} 563*9880d681SAndroid Build Coastguard Worker 564*9880d681SAndroid Build Coastguard Workerdeclare i8* @PR14233.f1() 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerdeclare i8* @PR14233.f2() 567