diff options
author | Nico Weber <nicolasweber@gmx.de> | 2016-02-19 01:52:46 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2016-02-19 01:52:46 +0000 |
commit | 6a6376b17cdf6c0adf8e52a298beff75079d932a (patch) | |
tree | 28db16259c8b63d08c36b6519f9503652f35b37f /clang/lib/Serialization/ASTWriter.cpp | |
parent | 74f5b282110eb6a548f93738e67b707d654b0882 (diff) | |
download | bcm5719-llvm-6a6376b17cdf6c0adf8e52a298beff75079d932a.tar.gz bcm5719-llvm-6a6376b17cdf6c0adf8e52a298beff75079d932a.zip |
Implement the likely resolution of core issue 253.
C++11 requires const objects to have a user-provided constructor, even for
classes without any fields. DR 253 relaxes this to say "If the implicit default
constructor initializes all subobjects, no initializer should be required."
clang is currently the only compiler that implements this C++11 rule, and e.g.
libstdc++ relies on something like DR 253 to compile in newer versions. This
change makes it possible to build code that says `const vector<int> v;' again
when using libstdc++5.2 and _GLIBCXX_DEBUG
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60284).
Fixes PR23381.
http://reviews.llvm.org/D16552
llvm-svn: 261297
Diffstat (limited to 'clang/lib/Serialization/ASTWriter.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 985bcb05b4d..1d1c99874b6 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -5547,6 +5547,7 @@ void ASTWriter::AddCXXDefinitionData(const CXXRecordDecl *D, RecordDataImpl &Rec Record.push_back(Data.HasOnlyCMembers); Record.push_back(Data.HasInClassInitializer); Record.push_back(Data.HasUninitializedReferenceMember); + Record.push_back(Data.HasUninitializedFields); Record.push_back(Data.NeedOverloadResolutionForMoveConstructor); Record.push_back(Data.NeedOverloadResolutionForMoveAssignment); Record.push_back(Data.NeedOverloadResolutionForDestructor); |