diff options
author | Chris Lattner <sabre@nondot.org> | 2008-09-28 06:05:35 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-09-28 06:05:35 +0000 |
commit | 891ed9aa87e14ce4c13155a77c09cde4555f7dd1 (patch) | |
tree | 2b639a87a9c3700380128bf66d627b9976b19d5d /lib/AST/Builtins.cpp | |
parent | bd7eb1c3b2af5cd0a7540c79da85e2ce15a893f4 (diff) |
Fix rdar://6252231 - cannot call vsnprintf with va_list on x86_64,
by decaying __builtin_va_list's type when forming builtins. On
x86-64 (and other targets) __builtin_va_list is a typedef for
an array.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56768 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Builtins.cpp')
-rw-r--r-- | lib/AST/Builtins.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/AST/Builtins.cpp b/lib/AST/Builtins.cpp index 8249c4119d..31e099af4e 100644 --- a/lib/AST/Builtins.cpp +++ b/lib/AST/Builtins.cpp @@ -137,6 +137,9 @@ static QualType DecodeTypeFromStr(const char *&Str, ASTContext &Context, case 'a': Type = Context.getBuiltinVaListType(); assert(!Type.isNull() && "builtin va list type not initialized!"); + // Do array -> pointer decay. The builtin should use the decayed type. + if (Type->isArrayType()) + Type = Context.getArrayDecayedType(Type); break; case 'V': { char *End; |