use-range-metadata.ll 778 B

12345678910111213141516171819202122232425262728293031323334353637
  1. ;; RUN: opt -S < %s -indvars | FileCheck %s
  2. ;; Check if IndVarSimplify understands !range metadata.
  3. declare void @abort()
  4. define i1 @iterate(i32* nocapture readonly %buffer) {
  5. entry:
  6. %length = load i32, i32* %buffer, !range !0
  7. br label %loop.preheader
  8. loop.preheader:
  9. br label %loop
  10. loop:
  11. %idx = phi i32 [ %idx.inc, %loop.next ], [ 0, %loop.preheader ]
  12. %oob.pred = icmp slt i32 %idx, %length
  13. br i1 %oob.pred, label %loop.next, label %oob
  14. ; CHECK: br i1 true, label %loop.next, label %oob
  15. loop.next:
  16. %idx.inc = add i32 %idx, 1
  17. %exit.pred = icmp slt i32 %idx.inc, %length
  18. br i1 %exit.pred, label %loop, label %abort.loopexit
  19. abort.loopexit:
  20. br label %abort
  21. abort:
  22. ret i1 false
  23. oob:
  24. tail call void @abort()
  25. ret i1 false
  26. }
  27. !0 = !{i32 1, i32 100}