range-signedness.ll 882 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
  2. define void @x(i1* %cond) {
  3. ; CHECK-LABEL: Classifying expressions for: @x
  4. entry:
  5. br label %loop
  6. loop:
  7. %idx = phi i8 [ 0, %entry ], [ %idx.inc, %loop ]
  8. ; CHECK: %idx = phi i8 [ 0, %entry ], [ %idx.inc, %loop ]
  9. ; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,-128) S: [0,-128)
  10. %idx.inc = add nsw i8 %idx, 1
  11. %c = load volatile i1, i1* %cond
  12. br i1 %c, label %loop, label %exit
  13. exit:
  14. ret void
  15. }
  16. define void @y(i8* %addr) {
  17. ; CHECK-LABEL: Classifying expressions for: @y
  18. entry:
  19. br label %loop
  20. loop:
  21. %idx = phi i8 [-5, %entry ], [ %idx.inc, %loop ]
  22. ; CHECK: %idx = phi i8 [ -5, %entry ], [ %idx.inc, %loop ]
  23. ; CHECK-NEXT: --> {-5,+,1}<%loop> U: [-5,6) S: [-5,6)
  24. %idx.inc = add i8 %idx, 1
  25. %continue = icmp slt i8 %idx.inc, 6
  26. br i1 %continue, label %loop, label %exit
  27. exit:
  28. ret void
  29. }