summaryrefslogtreecommitdiffstats
path: root/lib/Target
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2011-06-25 02:04:56 +0000
committerChad Rosier <mcrosier@apple.com>2011-06-25 02:04:56 +0000
commitdf78fcd2d6ba4fd499ead3bdea2fde83dbcecab9 (patch)
tree67483067f44cb04f5f1985031962a36874eef741 /lib/Target
parent75c2b2028bd898cb8448fcf0fa76c3d47843a164 (diff)
downloadexternal_llvm-df78fcd2d6ba4fd499ead3bdea2fde83dbcecab9.zip
external_llvm-df78fcd2d6ba4fd499ead3bdea2fde83dbcecab9.tar.gz
external_llvm-df78fcd2d6ba4fd499ead3bdea2fde83dbcecab9.tar.bz2
Enable tail call optimization in the presence of a byval (x86-32 and x86-64).
<rdar://problem/9483883> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133858 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index 6c606be..bab15e6 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -2505,6 +2505,10 @@ bool MatchingStackOffset(SDValue Arg, unsigned Offset, ISD::ArgFlagsTy Flags,
if (!FINode)
return false;
FI = FINode->getIndex();
+ } else if (Arg.getOpcode() == ISD::FrameIndex && Flags.isByVal()) {
+ FrameIndexSDNode *FINode = dyn_cast<FrameIndexSDNode>(Arg);
+ FI = FINode->getIndex();
+ Bytes = Flags.getByValSize();
} else
return false;