X86: Emit an ABI compliant prologue and epilogue for Win64
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 10 Feb 2015 00:57:42 +0000 (00:57 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 10 Feb 2015 00:57:42 +0000 (00:57 +0000)
commit69114ee01626e83678a8c6e44a12895f7c637466
tree8d32453df931b8512f77102bdf3cac1dc6c60594
parent14fcfef23b46e935aff5b533d3525645996c2928
X86: Emit an ABI compliant prologue and epilogue for Win64

Win64 has specific contraints on what valid prologues and epilogues look
like.  This constraint is born from the flexibility and descriptiveness
of Win64's unwind opcodes.

Prologues previously emitted by LLVM could not be represented by the
unwind opcodes, preventing operations powered by stack unwinding to
successfully work.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228641 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86FrameLowering.cpp
test/CodeGen/X86/frameaddr.ll
test/CodeGen/X86/gcc_except_table.ll
test/CodeGen/X86/win64_alloca_dynalloca.ll
test/CodeGen/X86/win64_alloca_dynalloca.s [new file with mode: 0644]
test/CodeGen/X86/win64_eh.ll
test/CodeGen/X86/win64_eh.s [new file with mode: 0644]
test/CodeGen/X86/win64_frame.ll [new file with mode: 0644]