; RUN: opt -tailcallelim -S < %s 2>&1 | FileCheck %s ; CHECK: add nsw i32 ; CHECK-NEXT: br label ; CHECK: add nsw i32 ; CHECK-NEXT: br label ; CHECK-NOT: Uses remain when a value is destroyed define i32 @test(i32 %n) { entry: %cmp = icmp slt i32 %n, 2 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %v1 = add nsw i32 %n, -2 %call1 = tail call i32 @test(i32 %v1) br label %return if.else: ; preds = %entry %v2 = add nsw i32 %n, 4 %call2 = tail call i32 @test(i32 %v2) br label %return return: ; preds = %if.end, %if.else %retval = phi i32 [ %call1, %if.then ], [ %call2, %if.else ] ret i32 %retval }