aaron.ballman added inline comments.
================ Comment at: clang/lib/Sema/SemaDeclCXX.cpp:4524-4525 if (!Dependent) { - if (Context.hasSameUnqualifiedType(QualType(ClassDecl->getTypeForDecl(),0), - BaseType)) + if (Delegating) return BuildDelegatingInitializer(BaseTInfo, Init, ClassDecl); ---------------- Looking at the source for `BuildDelegatingInitializer()`, it looks like we should still be able to call this in a dependent context. In fact, it has a fixme comment specifically about that: ``` // If we are in a dependent context, template instantiation will // perform this type-checking again. Just save the arguments that we // received in a ParenListExpr. // FIXME: This isn't quite ideal, since our ASTs don't capture all // of the information that we have about the base // initializer. However, deconstructing the ASTs is a dicey process, // and this approach is far more likely to get the corner cases right. ``` I'm wondering if the better fix here is to hoist the delegation check out of the `if (!Dependent)`. Did you try that and run into issues? ================ Comment at: clang/lib/Sema/SemaDeclCXX.cpp:5071 - if (CXXDestructorDecl *Dtor = LookupDestructor(Constructor->getParent())) { - MarkFunctionReferenced(Initializer->getSourceLocation(), Dtor); - DiagnoseUseOfDecl(Dtor, Initializer->getSourceLocation()); - } + if (!Constructor->isDependentContext()) { + if (CXXDestructorDecl *Dtor = LookupDestructor(Constructor->getParent())) { ---------------- Can you explain why this change was needed? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113518/new/ https://reviews.llvm.org/D113518 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits