summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-06-01 21:09:47 +0000
committerDan Gohman <gohman@apple.com>2010-06-01 21:09:47 +0000
commitd8acddda587cda98d46edb6d5fc71edd79a41654 (patch)
tree28529f7e4276f8233212dc55046bc5f1b9d460da /lib
parentaeafb374e21ff06e0e2fdcc2054f2fe569cc3f01 (diff)
downloadllvm-d8acddda587cda98d46edb6d5fc71edd79a41654.tar.gz
llvm-d8acddda587cda98d46edb6d5fc71edd79a41654.tar.bz2
llvm-d8acddda587cda98d46edb6d5fc71edd79a41654.tar.xz
Fix the allocation of shadow space for the Win64 calling convention
in X86FastISel. Patch by Jan Sjodin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105290 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/X86FastISel.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Target/X86/X86FastISel.cpp b/lib/Target/X86/X86FastISel.cpp
index 33a1919cce..47ee820b28 100644
--- a/lib/Target/X86/X86FastISel.cpp
+++ b/lib/Target/X86/X86FastISel.cpp
@@ -1391,6 +1391,12 @@ bool X86FastISel::X86SelectCall(const Instruction *I) {
// Analyze operands of the call, assigning locations to each operand.
SmallVector<CCValAssign, 16> ArgLocs;
CCState CCInfo(CC, false, TM, ArgLocs, I->getParent()->getContext());
+
+ // Allocate shadow area for Win64
+ if (Subtarget->isTargetWin64()) {
+ CCInfo.AllocateStack(32, 8);
+ }
+
CCInfo.AnalyzeCallOperands(ArgVTs, ArgFlags, CCAssignFnForCall(CC));
// Get a count of how many bytes are to be pushed on the stack.