Make variable argument intrinsics behave correctly in a Win64 CC function.
authorCharles Davis <cdavis5x@gmail.com>
Tue, 25 Aug 2015 23:27:41 +0000 (23:27 +0000)
committerCharles Davis <cdavis5x@gmail.com>
Tue, 25 Aug 2015 23:27:41 +0000 (23:27 +0000)
commit7e96f0f6fffbdebfdac238ae76cc3a791acfa23e
treee5dae4f86e6ba9fedb9ac8fe4bc0240032624a82
parentc3a33b1b54d66b5c6db12d93fc556f025bc69971
Make variable argument intrinsics behave correctly in a Win64 CC function.

Summary:
This change makes the variable argument intrinsics, `llvm.va_start` and
`llvm.va_copy`, and the `va_arg` instruction behave as they do on Windows
inside a `CallingConv::X86_64_Win64` function. It's needed for a Clang patch
I have to add support for GCC's `__builtin_ms_va_list` constructs.

Reviewers: nadav, asl, eugenis

CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1622

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245990 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAG.h
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Transforms/Instrumentation/MemorySanitizer.cpp
test/CodeGen/X86/x86-64-ms_abi-vararg.ll [new file with mode: 0644]