phi-speculation2.ll 635 B

123456789101112131415161718192021222324252627282930
  1. ; REQUIRES: asserts
  2. ; RUN: opt < %s -mergefunc -stats -disable-output 2>&1 | grep "functions merged"
  3. define i32 @foo1(i32 %x) {
  4. entry:
  5. %A = add i32 %x, 1
  6. %B = call i32 @foo1(i32 %A)
  7. br label %loop
  8. loop:
  9. %C = phi i32 [%B, %entry], [%D, %loop]
  10. %D = add i32 %C, 2
  11. %E = icmp ugt i32 %D, 10000
  12. br i1 %E, label %loopexit, label %loop
  13. loopexit:
  14. ret i32 %D
  15. }
  16. define i32 @foo2(i32 %x) {
  17. entry:
  18. %0 = add i32 %x, 1
  19. %1 = call i32 @foo2(i32 %0)
  20. br label %loop
  21. loop:
  22. %2 = phi i32 [%1, %entry], [%3, %loop]
  23. %3 = add i32 %2, 2
  24. %4 = icmp ugt i32 %3, 10000
  25. br i1 %4, label %loopexit, label %loop
  26. loopexit:
  27. ret i32 %3
  28. }