summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-08-28 00:51:03 +0000
committerDan Gohman <gohman@apple.com>2010-08-28 00:51:03 +0000
commitbadcda4afa35bf86ce2e6e77ca20f1ce2365b549 (patch)
tree6753af186a4072f780f2b303d429070ca07b379d /lib
parent7258df71fa21483f03d3804164c57f32cfc22e01 (diff)
downloadllvm-badcda4afa35bf86ce2e6e77ca20f1ce2365b549.tar.gz
llvm-badcda4afa35bf86ce2e6e77ca20f1ce2365b549.tar.bz2
llvm-badcda4afa35bf86ce2e6e77ca20f1ce2365b549.tar.xz
Completely disable tail calls when fast-isel is enabled, as fast-isel
doesn't currently support dealing with this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112341 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 3f8c593a91..17cc6bf31b 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -4649,6 +4649,11 @@ void SelectionDAGBuilder::LowerCallTo(ImmutableCallSite CS, SDValue Callee,
!isInTailCallPosition(CS, CS.getAttributes().getRetAttributes(), TLI))
isTailCall = false;
+ // If there's a possibility that fast-isel has already selected some amount
+ // of the current basic block, don't emit a tail call.
+ if (isTailCall && EnableFastISel)
+ isTailCall = false;
+
std::pair<SDValue,SDValue> Result =
TLI.LowerCallTo(getRoot(), RetTy,
CS.paramHasAttr(0, Attribute::SExt),