2
0

EraseBB.ll 769 B

1234567891011121314151617181920212223242526
  1. ; RUN: opt -tailcallelim -S < %s 2>&1 | FileCheck %s
  2. ; CHECK: add nsw i32
  3. ; CHECK-NEXT: br label
  4. ; CHECK: add nsw i32
  5. ; CHECK-NEXT: br label
  6. ; CHECK-NOT: Uses remain when a value is destroyed
  7. define i32 @test(i32 %n) {
  8. entry:
  9. %cmp = icmp slt i32 %n, 2
  10. br i1 %cmp, label %if.then, label %if.else
  11. if.then: ; preds = %entry
  12. %v1 = add nsw i32 %n, -2
  13. %call1 = tail call i32 @test(i32 %v1)
  14. br label %return
  15. if.else: ; preds = %entry
  16. %v2 = add nsw i32 %n, 4
  17. %call2 = tail call i32 @test(i32 %v2)
  18. br label %return
  19. return: ; preds = %if.end, %if.else
  20. %retval = phi i32 [ %call1, %if.then ], [ %call2, %if.else ]
  21. ret i32 %retval
  22. }