1 ; RUN: opt < %s -jump-threading -correlated-propagation 2 3 %struct.S2 = type {} 4 5 @g_128 = external global %struct.S2, align 1 6 @g_106 = external global i16, align 2 7 8 define void @int328(i16 signext %p_82) noreturn nounwind ssp { 9 entry: 10 %tobool3 = icmp eq i16 %p_82, 0 11 br label %for.cond.outer 12 13 for.cond.outer: ; preds = %for.cond.loopexit, %entry 14 br label %for.cond 15 16 for.cond.loopexit: ; preds = %bb.nph, %for.cond9.preheader 17 br label %for.cond.outer 18 19 for.cond.loopexit4.us-lcssa: ; preds = %if.then 20 br label %for.cond.loopexit4 21 22 for.cond.loopexit4: ; preds = %for.cond.loopexit4.us-lcssa.us, %for.cond.loopexit4.us-lcssa 23 br label %for.cond.backedge 24 25 for.cond: ; preds = %for.cond.backedge, %for.cond.outer 26 br i1 %tobool3, label %for.cond.split.us, label %for.cond.for.cond.split_crit_edge 27 28 for.cond.for.cond.split_crit_edge: ; preds = %for.cond 29 br label %lbl_133 30 31 for.cond.split.us: ; preds = %for.cond 32 br label %lbl_133.us 33 34 lbl_133.us: ; preds = %lbl_134.us, %for.cond.split.us 35 br i1 undef, label %if.else14.us-lcssa.us, label %if.then.us 36 37 lbl_134.us: ; preds = %if.then.us 38 br i1 icmp eq (i16 ptrtoint (%struct.S2* @g_128 to i16), i16 0), label %for.cond9.preheader.us-lcssa.us, label %lbl_133.us 39 40 if.then.us: ; preds = %lbl_133.us 41 br i1 true, label %for.cond.loopexit4.us-lcssa.us, label %lbl_134.us 42 43 if.else14.us-lcssa.us: ; preds = %lbl_133.us 44 br label %if.else14 45 46 for.cond9.preheader.us-lcssa.us: ; preds = %lbl_134.us 47 br label %for.cond9.preheader 48 49 for.cond.loopexit4.us-lcssa.us: ; preds = %if.then.us 50 br label %for.cond.loopexit4 51 52 lbl_133: ; preds = %lbl_134, %for.cond.for.cond.split_crit_edge 53 %l_109.0 = phi i16 [ 0, %for.cond.for.cond.split_crit_edge ], [ ptrtoint (%struct.S2* @g_128 to i16), %lbl_134 ] 54 %tobool = icmp eq i32 undef, 0 55 br i1 %tobool, label %if.else14.us-lcssa, label %if.then 56 57 if.then: ; preds = %lbl_133 58 br i1 false, label %for.cond.loopexit4.us-lcssa, label %lbl_134 59 60 lbl_134: ; preds = %if.then 61 br i1 icmp eq (i16 ptrtoint (%struct.S2* @g_128 to i16), i16 0), label %for.cond9.preheader.us-lcssa, label %lbl_133 62 63 for.cond9.preheader.us-lcssa: ; preds = %lbl_134 64 br label %for.cond9.preheader 65 66 for.cond9.preheader: ; preds = %for.cond9.preheader.us-lcssa, %for.cond9.preheader.us-lcssa.us 67 br i1 undef, label %bb.nph, label %for.cond.loopexit 68 69 bb.nph: ; preds = %for.cond9.preheader 70 br label %for.cond.loopexit 71 72 if.else14.us-lcssa: ; preds = %lbl_133 73 br label %if.else14 74 75 if.else14: ; preds = %if.else14.us-lcssa, %if.else14.us-lcssa.us 76 %l_109.0.lcssa = phi i16 [ %l_109.0, %if.else14.us-lcssa ], [ 0, %if.else14.us-lcssa.us ] 77 store i16 undef, i16* @g_106, align 2 78 br label %for.cond.backedge 79 80 for.cond.backedge: ; preds = %if.else14, %for.cond.loopexit4 81 br label %for.cond 82 } 83