Home | History | Annotate | Download | only in Reassociate
      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 
      9 define void @fn1(i32 %a, i1 %c, i32* %ptr)  {
     10 entry:
     11   br label %for.cond
     12 
     13 for.cond:
     14   %d.0 = phi i32 [ 1, %entry ], [ 2, %for.body ]
     15   br i1 %c, label %for.end, label %for.body
     16 
     17 for.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 
     26 for.end:
     27   ret void
     28 }
     29