On Mon, Sep 9, 2013 at 2:07 PM, Matt Beaumont-Gay <[email protected]>wrote:
> Author: matthewbg > Date: Mon Sep 9 16:07:58 2013 > New Revision: 190353 > > URL: http://llvm.org/viewvc/llvm-project?rev=190353&view=rev > Log: > Fix a crash introduced in r189828. > > The predicates in CXXRecordDecl which test various properties of special > members can't be called on incomplete decls. > > Modified: > cfe/trunk/lib/Analysis/CFG.cpp > cfe/trunk/test/Analysis/dtor.cpp > > Modified: cfe/trunk/lib/Analysis/CFG.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=190353&r1=190352&r2=190353&view=diff > > ============================================================================== > --- cfe/trunk/lib/Analysis/CFG.cpp (original) > +++ cfe/trunk/lib/Analysis/CFG.cpp Mon Sep 9 16:07:58 2013 > @@ -3133,7 +3133,7 @@ CFGBlock *CFGBuilder::VisitCXXDeleteExpr > DTy = DTy.getNonReferenceType(); > CXXRecordDecl *RD = > Context->getBaseElementType(DTy)->getAsCXXRecordDecl(); > if (RD) { > - if (!RD->hasTrivialDestructor()) > + if (RD->isCompleteDefinition() && !RD->hasTrivialDestructor()) > appendDeleteDtor(Block, RD, DE); > } > > > Modified: cfe/trunk/test/Analysis/dtor.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dtor.cpp?rev=190353&r1=190352&r2=190353&view=diff > > ============================================================================== > --- cfe/trunk/test/Analysis/dtor.cpp (original) > +++ cfe/trunk/test/Analysis/dtor.cpp Mon Sep 9 16:07:58 2013 > @@ -431,3 +431,8 @@ namespace PseudoDtor { > clang_analyzer_eval(true); // expected-warning{{TRUE}} > } > } > + > +namespace Incomplete { > + class Foo; // expected-note{{forward declaration}} > + void f(Foo *foo) { delete foo; } // expected-warning{{deleting pointer > to incomplete type}} > +} > > Is this the same as PR17162? -Eli
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
