<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Lang,</div><div class=""><br class=""></div><div class="">clang crashes when I compile the following code with "-Xclang -ast-dump”:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">class Base {</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">public:</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">  virtual void operator()() {}</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">};</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255); min-height: 13px;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""></span><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">class Derived : public Base {</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">public:</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">  void operator()() override {}</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">};</span></div></div><div class=""><br class=""></div><div class="">If I change “OS << D->getName()” to “OS << D->getNameAsString()”, the crash disappears.</div><div class=""><br class=""></div><div class="">Can you take a look please?</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jun 20, 2017, at 2:30 PM, Lang Hames via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Author: lhames<br class="">Date: Tue Jun 20 16:30:43 2017<br class="">New Revision: 305860<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=305860&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=305860&view=rev</a><br class="">Log:<br class="">Special-case handling of destructors in override lists when dumping ASTs.<br class=""><br class="">Fixes a bug in r305850: CXXDestructors don't have names, so we need to handle<br class="">printing of them separately.<br class=""><br class=""><br class="">Modified:<br class="">    cfe/trunk/lib/AST/ASTDumper.cpp<br class=""><br class="">Modified: cfe/trunk/lib/AST/ASTDumper.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDumper.cpp?rev=305860&r1=305859&r2=305860&view=diff" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDumper.cpp?rev=305860&r1=305859&r2=305860&view=diff</a><br class="">==============================================================================<br class="">--- cfe/trunk/lib/AST/ASTDumper.cpp (original)<br class="">+++ cfe/trunk/lib/AST/ASTDumper.cpp Tue Jun 20 16:30:43 2017<br class="">@@ -1189,9 +1189,12 @@ void ASTDumper::VisitFunctionDecl(const<br class="">       auto dumpOverride =<br class="">         [=](const CXXMethodDecl *D) {<br class="">           SplitQualType T_split = D->getType().split();<br class="">-          OS << D << " " << D->getParent()->getName() << "::"<br class="">-             << D->getName() << " '"<br class="">-             << QualType::getAsString(T_split) << "'";<br class="">+          OS << D << " " << D->getParent()->getName() << "::";<br class="">+          if (isa<CXXDestructorDecl>(D))<br class="">+            OS << "~" << D->getParent()->getName();<br class="">+          else<br class="">+            OS << D->getName();</div></div></blockquote><blockquote type="cite" class=""><div class=""><div class="">+          OS << " '" << QualType::getAsString(T_split) << "'";<br class="">         };<br class=""><br class="">       dumpChild([=] {<br class=""><br class=""><br class="">_______________________________________________<br class="">cfe-commits mailing list<br class=""><a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits<br class=""></div></div></blockquote></div><br class=""></body></html>