2012-10-20-infloop.ll 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. ; RUN: opt < %s -loop-vectorize -force-vector-interleave=1 -force-vector-width=4 -dce
  2. ; Check that we don't fall into an infinite loop.
  3. define void @test() nounwind {
  4. entry:
  5. br label %for.body
  6. for.body:
  7. %0 = phi i32 [ 1, %entry ], [ 0, %for.body ]
  8. br label %for.body
  9. }
  10. define void @test2() nounwind {
  11. entry:
  12. br label %for.body
  13. for.body: ; preds = %for.body, %entry
  14. %indvars.iv47 = phi i64 [ 0, %entry ], [ %indvars.iv.next48, %for.body ]
  15. %0 = phi i32 [ 1, %entry ], [ 0, %for.body ]
  16. %indvars.iv.next48 = add i64 %indvars.iv47, 1
  17. br i1 undef, label %for.end, label %for.body
  18. for.end: ; preds = %for.body
  19. unreachable
  20. }
  21. ;PR14701
  22. define void @start_model_rare() nounwind uwtable ssp {
  23. entry:
  24. br i1 undef, label %return, label %if.end
  25. if.end: ; preds = %entry
  26. br i1 undef, label %cond.false, label %cond.true
  27. cond.true: ; preds = %if.end
  28. unreachable
  29. cond.false: ; preds = %if.end
  30. br i1 undef, label %cond.false28, label %cond.true20
  31. cond.true20: ; preds = %cond.false
  32. unreachable
  33. cond.false28: ; preds = %cond.false
  34. br label %for.body40
  35. for.body40: ; preds = %for.inc50, %cond.false28
  36. %indvars.iv123 = phi i64 [ 3, %cond.false28 ], [ %indvars.iv.next124, %for.inc50 ]
  37. %step.0121 = phi i32 [ 1, %cond.false28 ], [ %step.1, %for.inc50 ]
  38. br i1 undef, label %if.then46, label %for.inc50
  39. if.then46: ; preds = %for.body40
  40. %inc47 = add nsw i32 %step.0121, 1
  41. br label %for.inc50
  42. for.inc50: ; preds = %if.then46, %for.body40
  43. %k.1 = phi i32 [ undef, %for.body40 ], [ %inc47, %if.then46 ]
  44. %step.1 = phi i32 [ %step.0121, %for.body40 ], [ %inc47, %if.then46 ]
  45. %indvars.iv.next124 = add i64 %indvars.iv123, 1
  46. %lftr.wideiv = trunc i64 %indvars.iv.next124 to i32
  47. %exitcond = icmp eq i32 %lftr.wideiv, 256
  48. br i1 %exitcond, label %for.end52, label %for.body40
  49. for.end52: ; preds = %for.inc50
  50. unreachable
  51. return: ; preds = %entry
  52. ret void
  53. }