Reduce nesting.

llvm-svn: 99889
This commit is contained in:
Anders Carlsson 2010-03-30 15:39:27 +00:00
parent 0c1dcb083e
commit a942dcd92b
1 changed files with 14 additions and 14 deletions

View File

@ -1679,25 +1679,25 @@ static void *GetKeyForBase(QualType BaseType) {
static void *GetKeyForMember(CXXBaseOrMemberInitializer *Member,
bool MemberMaybeAnon = false) {
if (!Member->isMemberInitializer())
return GetKeyForBase(QualType(Member->getBaseClass(), 0));
// For fields injected into the class via declaration of an anonymous union,
// use its anonymous union class declaration as the unique key.
if (Member->isMemberInitializer()) {
FieldDecl *Field = Member->getMember();
FieldDecl *Field = Member->getMember();
// After SetBaseOrMemberInitializers call, Field is the anonymous union
// data member of the class. Data member used in the initializer list is
// in AnonUnionMember field.
if (MemberMaybeAnon && Field->isAnonymousStructOrUnion())
Field = Member->getAnonUnionMember();
if (Field->getDeclContext()->isRecord()) {
RecordDecl *RD = cast<RecordDecl>(Field->getDeclContext());
if (RD->isAnonymousStructOrUnion())
return static_cast<void *>(RD);
}
return static_cast<void *>(Field);
// After SetBaseOrMemberInitializers call, Field is the anonymous union
// data member of the class. Data member used in the initializer list is
// in AnonUnionMember field.
if (MemberMaybeAnon && Field->isAnonymousStructOrUnion())
Field = Member->getAnonUnionMember();
if (Field->getDeclContext()->isRecord()) {
RecordDecl *RD = cast<RecordDecl>(Field->getDeclContext());
if (RD->isAnonymousStructOrUnion())
return static_cast<void *>(RD);
}
return GetKeyForBase(QualType(Member->getBaseClass(), 0));
return static_cast<void *>(Field);
}
/// ActOnMemInitializers - Handle the member initializers for a constructor.