diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-02-01 02:13:39 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-02-01 02:13:39 +0000 |
commit | 0a4fd46d9e0517cbe14f38f52f186094272f8c41 (patch) | |
tree | 33490a89e8744f4ce0db864ce51ee3d191e766f3 | |
parent | bdef66bf7f403c2dfbd58ff7357051154bb1fa87 (diff) |
Undo r94946 now all the tests are passing again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94970 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 14 | ||||
-rw-r--r-- | test/CodeGen/X86/tailcall2.ll | 2 |
2 files changed, 4 insertions, 12 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index e272d9b92a..5b7629852e 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -2263,17 +2263,6 @@ X86TargetLowering::IsEligibleForTailCallOptimization(SDValue Callee, if (isVarArg) return false; - // Don't tail call optimize recursive call. - GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee); - const Function *CalleeF = G ? cast<Function>(G->getGlobal()) : 0; - if (CallerF == CalleeF) - return false; - // If it's an indirect call, conversatively return false if the caller's - // address is taken. - if (!CalleeF && - !isa<ExternalSymbolSDNode>(Callee) && CallerF->hasAddressTaken()) - return false; - // Look for obvious safe cases to perform tail call optimization. // If the callee takes no arguments then go on to check the results of the // call. @@ -2296,7 +2285,10 @@ X86TargetLowering::IsEligibleForTailCallOptimization(SDValue Callee, return true; // If the return types match, then it's safe. + // Don't tail call optimize recursive call. + GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee); if (!G) return false; // FIXME: common external symbols? + const Function *CalleeF = cast<Function>(G->getGlobal()); const Type *CalleeRetTy = CalleeF->getReturnType(); return CallerRetTy == CalleeRetTy; } diff --git a/test/CodeGen/X86/tailcall2.ll b/test/CodeGen/X86/tailcall2.ll index e78e213d64..1e288f5765 100644 --- a/test/CodeGen/X86/tailcall2.ll +++ b/test/CodeGen/X86/tailcall2.ll @@ -73,7 +73,7 @@ entry: ; 32: call {{_?}}bar ; 64: t6: -; 64: callq {{_?}}t6 +; 64: jmp {{_?}}t6 ; 64: jmp {{_?}}bar %0 = icmp slt i32 %x, 10 br i1 %0, label %bb, label %bb1 |