diff options
author | Meador Inge <meadori@codesourcery.com> | 2012-07-01 15:57:25 +0000 |
---|---|---|
committer | Meador Inge <meadori@codesourcery.com> | 2012-07-01 15:57:25 +0000 |
commit | fb40e3f10ccef93c4f8fb6bd4fe5a108fa6cd369 (patch) | |
tree | c01ff6ec9c70a847d3db47e9554ca152fe8e1ac6 /include/clang | |
parent | e7e9332a0cd468c477e387a74a53114f1f1c10e6 (diff) |
PR13189: va_list broken with precompiled headers
For some targets a structure named __va_list_tag is built to help define
the __builtin_va_list type. However, __va_list_tag was not being treated as a
predefined type thus causing problems when serializing the AST. This commit
fixes that oversight by adding the necessary support to treat __va_list_tag
as a predefined type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159508 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r-- | include/clang/AST/ASTContext.h | 9 | ||||
-rw-r--r-- | include/clang/Serialization/ASTBitCodes.h | 4 |
2 files changed, 12 insertions, 1 deletions
diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index 7c13907bfe..a2177273dd 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -599,6 +599,10 @@ public: mutable QualType AutoDeductTy; // Deduction against 'auto'. mutable QualType AutoRRefDeductTy; // Deduction against 'auto &&'. + // Type used to help define __builtin_va_list for some targets. + // The type is built when constructing 'BuiltinVaListDecl'. + mutable QualType VaListTagTy; + ASTContext(LangOptions& LOpts, SourceManager &SM, const TargetInfo *t, IdentifierTable &idents, SelectorTable &sels, Builtin::Context &builtins, @@ -1185,6 +1189,11 @@ public: return getTypeDeclType(getBuiltinVaListDecl()); } + /// \brief Retrieve the C type declaration corresponding to the predefined + /// __va_list_tag type used to help define the __builtin_va_list type for + /// some targets. + QualType getVaListTagType() const; + /// getCVRQualifiedType - Returns a type with additional const, /// volatile, or restrict qualifiers. QualType getCVRQualifiedType(QualType T, unsigned CVR) const { diff --git a/include/clang/Serialization/ASTBitCodes.h b/include/clang/Serialization/ASTBitCodes.h index fbcc5c6cf7..dbe6e5a314 100644 --- a/include/clang/Serialization/ASTBitCodes.h +++ b/include/clang/Serialization/ASTBitCodes.h @@ -640,7 +640,9 @@ namespace clang { /// \brief ARC's unbridged-cast placeholder type. PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34, /// \brief The pseudo-object placeholder type. - PREDEF_TYPE_PSEUDO_OBJECT = 35 + PREDEF_TYPE_PSEUDO_OBJECT = 35, + /// \brief The __va_list_tag placeholder type. + PREDEF_TYPE_VA_LIST_TAG = 36 }; /// \brief The number of predefined type IDs that are reserved for |