It is enough for the CallInst to have no uses to be made a tail call with a ret
authorCameron Zwarich <zwarich@apple.com>
Thu, 24 Mar 2011 15:54:11 +0000 (15:54 +0000)
committerCameron Zwarich <zwarich@apple.com>
Thu, 24 Mar 2011 15:54:11 +0000 (15:54 +0000)
void; it doesn't need to have a void type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128212 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/CodeGenPrepare.cpp

index fc7e13675cbdd743fe677c82d692701cfbc7190d..337a4d3c468ebc971e562f69577454cfdd2f878f 100644 (file)
@@ -644,7 +644,7 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) {
       if (++RI == RE)
         continue;
       CallInst *CI = dyn_cast<CallInst>(&*RI);
-      if (CI && CI->getType()->isVoidTy() && TLI->mayBeEmittedAsTailCall(CI))
+      if (CI && CI->use_empty() && TLI->mayBeEmittedAsTailCall(CI))
         TailCalls.push_back(CI);
     }
   }