Fix fastcc structure return with fast-isel on x86-32
authorDerek Schuff <dschuff@google.com>
Mon, 30 Apr 2012 16:57:15 +0000 (16:57 +0000)
committerDerek Schuff <dschuff@google.com>
Mon, 30 Apr 2012 16:57:15 +0000 (16:57 +0000)
commitddc693bd220bbabb6eadcb8507c9fe2edaf49ffb
tree96f4e1ebf153dd564773669ad6f6f269c3d1b5a3
parentff73d8fef9a94ceb2fc35d9371deeb0214c0eeee
Fix fastcc structure return with fast-isel on x86-32

On x86-32, structure return via sret lets the callee pop the hidden
pointer argument off the stack, which the caller then re-pushes.
However if the calling convention is fastcc, then a register is used
instead, and the caller should not adjust the stack. This is
implemented with a check of IsTailCallConvention
X86TargetLowering::LowerCall but is now checked properly in
X86FastISel::DoSelectCall.

(this time, actually commit what was reviewed!)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155825 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86FastISel.cpp
test/CodeGen/X86/fast-isel-x86.ll