<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Thu, Apr 6, 2017 at 11:42 AM Ivan Krasin via Phabricator via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">krasin created this revision.<br class="gmail_msg">
Herald added a subscriber: kubamracek.<br class="gmail_msg">
<br class="gmail_msg">
Recently, Clang enabled the check for virtual destructors<br class="gmail_msg">
in the presence of virtual methods.</blockquote><div><br>Which check exactly? A warning?<br><br>If the type is never actually destroyed via a base pointer - I'd suggest not adding a virtual dtor unnecessarily.<br><br>Instead mark the dtor protected in the base class and mark derived classes as 'final'. (that way they'll have public non-virtual dtors accessible from the derived objects/pointers - and no chance of accidental polymorphic destruction)<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> That broke the bootstrap<br class="gmail_msg">
build. Fixing it.<br class="gmail_msg">
<br class="gmail_msg">
This is a second attempt to fix this. Now, with out-of-line definition.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D31780" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D31780</a><br class="gmail_msg">
<br class="gmail_msg">
Files:<br class="gmail_msg">
  lib/sanitizer_common/sanitizer_flag_parser.cc<br class="gmail_msg">
  lib/sanitizer_common/sanitizer_flag_parser.h<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Index: lib/sanitizer_common/sanitizer_flag_parser.h<br class="gmail_msg">
===================================================================<br class="gmail_msg">
--- lib/sanitizer_common/sanitizer_flag_parser.h<br class="gmail_msg">
+++ lib/sanitizer_common/sanitizer_flag_parser.h<br class="gmail_msg">
@@ -22,6 +22,7 @@<br class="gmail_msg">
<br class="gmail_msg">
 class FlagHandlerBase {<br class="gmail_msg">
  public:<br class="gmail_msg">
+  virtual ~FlagHandlerBase();<br class="gmail_msg">
   virtual bool Parse(const char *value) { return false; }<br class="gmail_msg">
 };<br class="gmail_msg">
<br class="gmail_msg">
Index: lib/sanitizer_common/sanitizer_flag_parser.cc<br class="gmail_msg">
===================================================================<br class="gmail_msg">
--- lib/sanitizer_common/sanitizer_flag_parser.cc<br class="gmail_msg">
+++ lib/sanitizer_common/sanitizer_flag_parser.cc<br class="gmail_msg">
@@ -20,6 +20,8 @@<br class="gmail_msg">
<br class="gmail_msg">
 namespace __sanitizer {<br class="gmail_msg">
<br class="gmail_msg">
+FlagHandlerBase::~FlagHandlerBase() {}<br class="gmail_msg">
+<br class="gmail_msg">
 LowLevelAllocator FlagParser::Alloc;<br class="gmail_msg">
<br class="gmail_msg">
 class UnknownFlags {<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div></div>