136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman; ModuleID = '<stdin>' 236106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman; RUN: opt < %s -loop-reduce -S | FileCheck %s 336106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman; PR10386 436106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 536106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmandeclare i1 @foo() 636106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmandeclare i8* @bar(i8*,i8*,i8*,i8*) 736106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 836106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmandefine void @f(i64* %a,i64* %b,i64* %c,i64* %d,i64* %e,i64* %f,i64* %g) nounwind uwtable { 936106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanentry: 1036106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br label %b_throw.preheader 1136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 1236106040862e876a53a56f5765d6d3cd1181dd04Eli FriedmanD_BREAK_LBL: ; preds = %indirectgoto 1336106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman call i1 @foo() 1436106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br label %indirectgoto 1536106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 1636106040862e876a53a56f5765d6d3cd1181dd04Eli FriedmanH_CONST_LBL: ; preds = %indirectgoto 1736106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman call i1 @foo() 1836106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br label %body_failed 1936106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 2036106040862e876a53a56f5765d6d3cd1181dd04Eli FriedmanH_MPZ_LBL: ; preds = %indirectgoto 2136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %boo3 = call i1 @foo() 2236106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br i1 %boo3, label %body_failed, label %while.cond.i 2336106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 2436106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanwhile.cond.i: ; preds = %while.body.i15795, %if.then.i15791 2536106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %phi = phi i64 [ %tmp20916, %while.body.i15795 ], [ 0, %H_MPZ_LBL ] 2636106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %tmp20916 = add i64 %phi, 1 2736106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %incdec.ptr.i15793 = getelementptr i64* %pc.0.lcssa.i1610719352, i64 %tmp20916 2836106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %boo2 = call i1 @foo() 2936106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br i1 %boo2, label %indirectgoto, label %while.body.i15795 3036106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 3136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanwhile.body.i15795: ; preds = %while.cond.i 3236106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %tmp20.i = load i64* %incdec.ptr.i15793, align 8 3336106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %boo1 = call i1 @foo() 3436106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br i1 %boo1, label %while.cond.i, label %body_failed 3536106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 3636106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanb_throw.preheader: ; preds = %body_failed, %entry 3736106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman call i1 @foo() 3836106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br label %indirectgoto 3936106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 4036106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanbody_failed: 4136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %pc.0.lcssa.i1610719364 = phi i64* [ %pc.0.lcssa.i1610719352, %indirectgoto ], [ %pc.0.lcssa.i1610719352, %H_MPZ_LBL ], [ %b, %H_CONST_LBL ], [ %pc.0.lcssa.i1610719352, %while.body.i15795 ] 4236106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman call i1 @foo() 4336106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman br label %b_throw.preheader 4436106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 4536106040862e876a53a56f5765d6d3cd1181dd04Eli Friedmanindirectgoto: 4636106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %pc.0.lcssa.i1610719352 = phi i64* [ %pc.0.lcssa.i1610719352, %D_BREAK_LBL ], [ %a, %b_throw.preheader ], [ %d, %while.cond.i ] 4736106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman %p = call i8* @bar(i8* blockaddress(@f, %D_BREAK_LBL), i8* blockaddress(@f, %H_CONST_LBL), i8* blockaddress(@f, %H_MPZ_LBL), i8* blockaddress(@f, %body_failed) ) 4836106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman indirectbr i8* %p, [label %D_BREAK_LBL, label %H_CONST_LBL, label %H_MPZ_LBL, label %body_failed] 4936106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman} 5036106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman 5136106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman; CHECK: %p = call i8* @bar(i8* blockaddress(@f, %D_BREAK_LBL), i8* blockaddress(@f, %H_CONST_LBL), i8* blockaddress(@f, %H_MPZ_LBL), i8* blockaddress(@f, %body_failed)) 5236106040862e876a53a56f5765d6d3cd1181dd04Eli Friedman; CHECK: indirectbr i8* %p, [label %D_BREAK_LBL, label %H_CONST_LBL, label %H_MPZ_LBL, label %body_failed] 53