On Fri, Mar 06, 2015 at 11:50:51AM -0800, Hans Wennborg wrote: > Tom, is this OK for 3.6.1? >
This is fine with me as long as Richard approves. -Tom > On Thu, Mar 5, 2015 at 10:01 PM, Nico Weber <[email protected]> wrote: > > Author: nico > > Date: Fri Mar 6 00:01:06 2015 > > New Revision: 231451 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=231451&view=rev > > Log: > > Don't crash on non-public referenced dtors in toplevel classes. > > > > Fixes PR22793, a bug that caused self-hosting to fail after the innocuous > > r231254. See the bug for details. > > > > Modified: > > cfe/trunk/lib/Sema/SemaExpr.cpp > > cfe/trunk/test/CodeGenCXX/trivial-constructor-init.cpp > > > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=231451&r1=231450&r2=231451&view=diff > > ============================================================================== > > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Fri Mar 6 00:01:06 2015 > > @@ -117,7 +117,7 @@ static AvailabilityResult DiagnoseAvaila > > case AR_Available: > > case AR_NotYetIntroduced: > > break; > > - > > + > > case AR_Deprecated: > > if (S.getCurContextAvailability() != AR_Deprecated) > > S.EmitAvailabilityWarning(Sema::AD_Deprecation, > > @@ -11859,8 +11859,11 @@ void Sema::MarkFunctionReferenced(Source > > } else if (CXXDestructorDecl *Destructor = > > dyn_cast<CXXDestructorDecl>(Func)) { > > Destructor = cast<CXXDestructorDecl>(Destructor->getFirstDecl()); > > - if (Destructor->isDefaulted() && !Destructor->isDeleted()) > > + if (Destructor->isDefaulted() && !Destructor->isDeleted()) { > > + if (Destructor->isTrivial() && !Destructor->hasAttr<DLLExportAttr>()) > > + return; > > DefineImplicitDestructor(Loc, Destructor); > > + } > > if (Destructor->isVirtual() && getLangOpts().AppleKext) > > MarkVTableUsed(Loc, Destructor->getParent()); > > } else if (CXXMethodDecl *MethodDecl = dyn_cast<CXXMethodDecl>(Func)) { > > > > Modified: cfe/trunk/test/CodeGenCXX/trivial-constructor-init.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/trivial-constructor-init.cpp?rev=231451&r1=231450&r2=231451&view=diff > > ============================================================================== > > --- cfe/trunk/test/CodeGenCXX/trivial-constructor-init.cpp (original) > > +++ cfe/trunk/test/CodeGenCXX/trivial-constructor-init.cpp Fri Mar 6 > > 00:01:06 2015 > > @@ -32,3 +32,17 @@ static C c[4]; > > > > int main() { > > } > > + > > +namespace PR22793 { > > +template <typename> > > +struct foo { > > +protected: > > +// CHECK-NOT: _ZN7PR227933fooIiED2Ev > > + ~foo() = default; > > + friend void func(); > > +}; > > + > > +void func() { foo<int> f; } > > + > > +template struct foo<int>; > > +} > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
