summaryrefslogtreecommitdiff
path: root/lib/Serialization/ASTWriterDecl.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-06-10 03:12:00 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-06-10 03:12:00 +0000
commitca5233044ef679840d1ad1c46a36b16e2ee8a6e1 (patch)
tree3867dd3ebbc1b6fe4d0e51ab5e17357ca9754d3f /lib/Serialization/ASTWriterDecl.cpp
parent18b73eacc21c8a7c03168aa30c401d072cc6ffc9 (diff)
downloadclang-ca5233044ef679840d1ad1c46a36b16e2ee8a6e1.tar.gz
clang-ca5233044ef679840d1ad1c46a36b16e2ee8a6e1.tar.bz2
clang-ca5233044ef679840d1ad1c46a36b16e2ee8a6e1.tar.xz
PR13064: Store whether an in-class initializer uses direct or copy
initialization, and use that information to produce the right kind of initialization during template instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158288 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTWriterDecl.cpp')
-rw-r--r--lib/Serialization/ASTWriterDecl.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp
index 86b667ad71..d4ebc1c42a 100644
--- a/lib/Serialization/ASTWriterDecl.cpp
+++ b/lib/Serialization/ASTWriterDecl.cpp
@@ -626,11 +626,13 @@ void ASTDeclWriter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) {
void ASTDeclWriter::VisitFieldDecl(FieldDecl *D) {
VisitDeclaratorDecl(D);
Record.push_back(D->isMutable());
- Record.push_back(D->getBitWidth()? 1 : D->hasInClassInitializer() ? 2 : 0);
- if (D->getBitWidth())
- Writer.AddStmt(D->getBitWidth());
- else if (D->hasInClassInitializer())
- Writer.AddStmt(D->getInClassInitializer());
+ if (D->InitializerOrBitWidth.getInt() != ICIS_NoInit ||
+ D->InitializerOrBitWidth.getPointer()) {
+ Record.push_back(D->InitializerOrBitWidth.getInt() + 1);
+ Writer.AddStmt(D->InitializerOrBitWidth.getPointer());
+ } else {
+ Record.push_back(0);
+ }
if (!D->getDeclName())
Writer.AddDeclRef(Context.getInstantiatedFromUnnamedFieldDecl(D), Record);