[X86] Always return the sret parameter in eax/rax, even on 32-bit
authorReid Kleckner <reid@kleckner.net>
Tue, 12 May 2015 20:56:32 +0000 (20:56 +0000)
committerReid Kleckner <reid@kleckner.net>
Tue, 12 May 2015 20:56:32 +0000 (20:56 +0000)
commit0d8dadf96e10b2409b981a39b53c41be6ce3db31
treeeb86a962e472d141bd8ca0c7c311db3d60d08035
parentc89f135a413a186970e15e71dfc55855aeae9e65
[X86] Always return the sret parameter in eax/rax, even on 32-bit

Summary:
This rule was always in the old SysV i386 ABI docs and the new ones that
H.J. Lu has put together, but we never noticed:

  EAX   scratch register; also used to return integer and pointer values
        from functions; also stores the address of a returned struct or union

Fixes PR23491.

Reviewers: majnemer

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9715

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237175 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/cmovcmov.ll
test/CodeGen/X86/sret-implicit.ll