diff options
author | Charles Davis <cdavis5x@gmail.com> | 2015-09-17 20:55:33 +0000 |
---|---|---|
committer | Charles Davis <cdavis5x@gmail.com> | 2015-09-17 20:55:33 +0000 |
commit | c7d5c94f78c71d7369c5e3a55daf4d819943c15b (patch) | |
tree | 699d74797a9eb67c9d86736b349df7eb84c3d929 /clang/lib/Sema/Sema.cpp | |
parent | 1bbfa7f9d7e33babe186b046b6719da55deaf4af (diff) | |
download | bcm5719-llvm-c7d5c94f78c71d7369c5e3a55daf4d819943c15b.tar.gz bcm5719-llvm-c7d5c94f78c71d7369c5e3a55daf4d819943c15b.zip |
Support __builtin_ms_va_list.
Summary:
This change adds support for `__builtin_ms_va_list`, a GCC extension for
variadic `ms_abi` functions. The existing `__builtin_va_list` support is
inadequate for this because `va_list` is defined differently in the Win64
ABI vs. the System V/AMD64 ABI.
Depends on D1622.
Reviewers: rsmith, rnk, rjmccall
CC: cfe-commits
Differential Revision: http://reviews.llvm.org/D1623
llvm-svn: 247941
Diffstat (limited to 'clang/lib/Sema/Sema.cpp')
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index b009123c8c7..cc509566bdd 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -249,6 +249,12 @@ void Sema::Initialize() { } } + if (PP.getTargetInfo().hasBuiltinMSVaList()) { + DeclarationName MSVaList = &Context.Idents.get("__builtin_ms_va_list"); + if (IdResolver.begin(MSVaList) == IdResolver.end()) + PushOnScopeChains(Context.getBuiltinMSVaListDecl(), TUScope); + } + DeclarationName BuiltinVaList = &Context.Idents.get("__builtin_va_list"); if (IdResolver.begin(BuiltinVaList) == IdResolver.end()) PushOnScopeChains(Context.getBuiltinVaListDecl(), TUScope); |