<div dir="ltr">On Mon, Sep 9, 2013 at 2:07 PM, Matt Beaumont-Gay <span dir="ltr"><<a href="mailto:matthewbg@google.com" target="_blank">matthewbg@google.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: matthewbg<br>
Date: Mon Sep  9 16:07:58 2013<br>
New Revision: 190353<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=190353&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=190353&view=rev</a><br>
Log:<br>
Fix a crash introduced in r189828.<br>
<br>
The predicates in CXXRecordDecl which test various properties of special<br>
members can't be called on incomplete decls.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Analysis/CFG.cpp<br>
    cfe/trunk/test/Analysis/dtor.cpp<br>
<br>
Modified: cfe/trunk/lib/Analysis/CFG.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=190353&r1=190352&r2=190353&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=190353&r1=190352&r2=190353&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Analysis/CFG.cpp (original)<br>
+++ cfe/trunk/lib/Analysis/CFG.cpp Mon Sep  9 16:07:58 2013<br>
@@ -3133,7 +3133,7 @@ CFGBlock *CFGBuilder::VisitCXXDeleteExpr<br>
   DTy = DTy.getNonReferenceType();<br>
   CXXRecordDecl *RD = Context->getBaseElementType(DTy)->getAsCXXRecordDecl();<br>
   if (RD) {<br>
-    if (!RD->hasTrivialDestructor())<br>
+    if (RD->isCompleteDefinition() && !RD->hasTrivialDestructor())<br>
       appendDeleteDtor(Block, RD, DE);<br>
   }<br>
<br>
<br>
Modified: cfe/trunk/test/Analysis/dtor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dtor.cpp?rev=190353&r1=190352&r2=190353&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dtor.cpp?rev=190353&r1=190352&r2=190353&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/Analysis/dtor.cpp (original)<br>
+++ cfe/trunk/test/Analysis/dtor.cpp Mon Sep  9 16:07:58 2013<br>
@@ -431,3 +431,8 @@ namespace PseudoDtor {<br>
     clang_analyzer_eval(true); // expected-warning{{TRUE}}<br>
   }<br>
 }<br>
+<br>
+namespace Incomplete {<br>
+  class Foo; // expected-note{{forward declaration}}<br>
+  void f(Foo *foo) { delete foo; } // expected-warning{{deleting pointer to incomplete type}}<br>
+}<br><br></blockquote><div><br></div><div>Is this the same as PR17162?</div><div><br></div><div>-Eli </div></div><br></div></div>