Revert 94937 and move the noreturn check to codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95198 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 495418d..3a25714 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -4205,8 +4205,13 @@
   const ReturnInst *Ret = dyn_cast<ReturnInst>(Term);
   const Function *F = ExitBB->getParent();
 
-  // The block must end in a return statement or an unreachable.
-  if (!Ret && !isa<UnreachableInst>(Term)) return false;
+  // The block must end in a return statement.
+  // FIXME: Disallow tailcall if the block ends in an unreachable for now.
+  // The way tailcall optimization is currently implemented means it will
+  // add an epilogue followed by a jump. That is not profitable. Also, if
+  // the callee is a special function (e.g. longjmp on x86), it can end up
+  // causing miscompilation that has not been fully understood.
+  if (!Ret) return false;
 
   // Unless we are explicitly forcing tailcall optimization do not tailcall if
   // the called function is bitcast'ed. The analysis may not be entirely