1; RUN: opt < %s -reassociate -S 2 3; PR28367 4 5; Check to make sure this test does not assert or segfault. If we get too 6; aggressive with retrying instructions it's possible to invalidate our 7; iterator. See PR28367 for complete details. 8 9define void @fn1(i32 %a, i1 %c, i32* %ptr) { 10entry: 11 br label %for.cond 12 13for.cond: 14 %d.0 = phi i32 [ 1, %entry ], [ 2, %for.body ] 15 br i1 %c, label %for.end, label %for.body 16 17for.body: 18 %sub1 = sub i32 %a, %d.0 19 %dead1 = add i32 %sub1, 1 20 %dead2 = mul i32 %dead1, 3 21 %dead3 = mul i32 %dead2, %sub1 22 %sub2 = sub nsw i32 0, %d.0 23 store i32 %sub2, i32* %ptr, align 4 24 br label %for.cond 25 26for.end: 27 ret void 28} 29