forked from OSchip/llvm-project
Add missing serialization code for one of the CXXRecordDecl definition flags.
llvm-svn: 206493
This commit is contained in:
parent
5b01593de4
commit
b45a6f72b6
|
@ -1199,6 +1199,7 @@ void ASTDeclReader::ReadCXXDefinitionData(
|
|||
Data.DefaultedMoveAssignmentIsDeleted = Record[Idx++];
|
||||
Data.DefaultedDestructorIsDeleted = Record[Idx++];
|
||||
Data.HasTrivialSpecialMembers = Record[Idx++];
|
||||
Data.DeclaredNonTrivialSpecialMembers = Record[Idx++];
|
||||
Data.HasIrrelevantDestructor = Record[Idx++];
|
||||
Data.HasConstexprNonCopyMoveConstructor = Record[Idx++];
|
||||
Data.DefaultedDefaultConstructorIsConstexpr = Record[Idx++];
|
||||
|
|
|
@ -5248,6 +5248,7 @@ void ASTWriter::AddCXXDefinitionData(const CXXRecordDecl *D, RecordDataImpl &Rec
|
|||
Record.push_back(Data.DefaultedMoveAssignmentIsDeleted);
|
||||
Record.push_back(Data.DefaultedDestructorIsDeleted);
|
||||
Record.push_back(Data.HasTrivialSpecialMembers);
|
||||
Record.push_back(Data.DeclaredNonTrivialSpecialMembers);
|
||||
Record.push_back(Data.HasIrrelevantDestructor);
|
||||
Record.push_back(Data.HasConstexprNonCopyMoveConstructor);
|
||||
Record.push_back(Data.DefaultedDefaultConstructorIsConstexpr);
|
||||
|
|
|
@ -3,3 +3,18 @@ class HasFriends {
|
|||
friend void friend_2(HasFriends);
|
||||
void private_thing();
|
||||
};
|
||||
|
||||
struct HasNontrivialDefaultConstructor {
|
||||
HasNontrivialDefaultConstructor() = default;
|
||||
HasNontrivialDefaultConstructor(int n = 0);
|
||||
|
||||
// Ensure this class is not POD but is still trivially-copyable.
|
||||
// This is necessary to exercise the second static_assert below,
|
||||
// because GCC's spec for __has_trivial_constructor is absurd.
|
||||
int m;
|
||||
private:
|
||||
int n;
|
||||
};
|
||||
|
||||
static_assert(!__is_trivial(HasNontrivialDefaultConstructor), "");
|
||||
static_assert(!__has_trivial_constructor(HasNontrivialDefaultConstructor), "");
|
||||
|
|
|
@ -19,3 +19,6 @@ void test_friends(HasFriends s) {
|
|||
friend_1(s);
|
||||
friend_2(s);
|
||||
}
|
||||
|
||||
static_assert(!__is_trivial(HasNontrivialDefaultConstructor), "");
|
||||
static_assert(!__has_trivial_constructor(HasNontrivialDefaultConstructor), "");
|
||||
|
|
Loading…
Reference in New Issue