forked from OSchip/llvm-project
parent
867b48f713
commit
20464fba70
|
@ -604,6 +604,8 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
|
|||
for (CXXRecordDecl::base_class_iterator VBase =
|
||||
ClassDecl->vbases_begin(),
|
||||
E = ClassDecl->vbases_end(); VBase != E; ++VBase) {
|
||||
if (VBase->getType()->isDependentType())
|
||||
continue;
|
||||
if (CXXBaseOrMemberInitializer *Value =
|
||||
AllBaseFields.lookup(VBase->getType()->getAs<RecordType>()))
|
||||
AllToInit.push_back(Value);
|
||||
|
@ -611,8 +613,7 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
|
|||
CXXRecordDecl *VBaseDecl =
|
||||
cast<CXXRecordDecl>(VBase->getType()->getAs<RecordType>()->getDecl());
|
||||
assert(VBaseDecl && "setBaseOrMemberInitializers - VBaseDecl null");
|
||||
if (!VBaseDecl->getDefaultConstructor(C) &&
|
||||
!VBase->getType()->isDependentType())
|
||||
if (!VBaseDecl->getDefaultConstructor(C))
|
||||
Bases.push_back(VBase);
|
||||
CXXBaseOrMemberInitializer *Member =
|
||||
new (C) CXXBaseOrMemberInitializer(VBase->getType(), 0, 0,
|
||||
|
@ -628,6 +629,9 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
|
|||
// Virtuals are in the virtual base list and already constructed.
|
||||
if (Base->isVirtual())
|
||||
continue;
|
||||
// Skip dependent types.
|
||||
if (Base->getType()->isDependentType())
|
||||
continue;
|
||||
if (CXXBaseOrMemberInitializer *Value =
|
||||
AllBaseFields.lookup(Base->getType()->getAs<RecordType>()))
|
||||
AllToInit.push_back(Value);
|
||||
|
@ -635,8 +639,7 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
|
|||
CXXRecordDecl *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
|
||||
assert(BaseDecl && "setBaseOrMemberInitializers - BaseDecl null");
|
||||
if (!BaseDecl->getDefaultConstructor(C) &&
|
||||
!Base->getType()->isDependentType())
|
||||
if (!BaseDecl->getDefaultConstructor(C))
|
||||
Bases.push_back(Base);
|
||||
CXXBaseOrMemberInitializer *Member =
|
||||
new (C) CXXBaseOrMemberInitializer(Base->getType(), 0, 0,
|
||||
|
|
|
@ -23,3 +23,10 @@ template<typename _Container> class insert_iterator {
|
|||
insert_iterator(_Container& __x) : container(&__x) {}
|
||||
};
|
||||
|
||||
// PR4763
|
||||
template<typename T> struct s0 {};
|
||||
template<typename T> struct s0_traits {};
|
||||
template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
|
||||
s1() {}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue