diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-01-31 23:50:57 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-01-31 23:50:57 +0000 |
commit | f5b76518c9c1afd2e08a59c11f3de8fb25540b58 (patch) | |
tree | da8a7487c3d7e402a59b143620b4b247eff4e594 /llvm/lib/Target/X86/X86FastISel.cpp | |
parent | c7d437c1188e7be2403328dee4192e9f3f015abc (diff) | |
download | bcm5719-llvm-f5b76518c9c1afd2e08a59c11f3de8fb25540b58.tar.gz bcm5719-llvm-f5b76518c9c1afd2e08a59c11f3de8fb25540b58.zip |
Implement inalloca codegen for x86 with the new inalloca design
Calls with inalloca are lowered by skipping all stores for arguments
passed in memory and the initial stack adjustment to allocate argument
memory.
Now the frontend is responsible for the memory layout, and the backend
doesn't have to do any work. As a result these changes are pretty
minimal.
Reviewers: echristo
Differential Revision: http://llvm-reviews.chandlerc.com/D2637
llvm-svn: 200596
Diffstat (limited to 'llvm/lib/Target/X86/X86FastISel.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86FastISel.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp index be6f13899c1..9b842b74e4c 100644 --- a/llvm/lib/Target/X86/X86FastISel.cpp +++ b/llvm/lib/Target/X86/X86FastISel.cpp @@ -1910,6 +1910,10 @@ bool X86FastISel::DoSelectCall(const Instruction *I, const char *MemIntName) { if (isVarArg && isWin64) return false; + // Don't know about inalloca yet. + if (CS.hasInAllocaArgument()) + return false; + // Fast-isel doesn't know about callee-pop yet. if (X86::isCalleePop(CC, Subtarget->is64Bit(), isVarArg, TM.Options.GuaranteedTailCallOpt)) |