<br><br>On Tuesday, March 10, 2015, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">================<br>
Comment at: include/clang/Basic/ABI.h:28-29<br>
@@ -29,1 +27,4 @@<br>
+  Ctor_Comdat,         ///< The COMDAT used for ctors<br>
+  Ctor_CopyingClosure, ///< Copying closure variant of a ctor<br>
+  Ctor_DefaultClosure, ///< Default closure variant of a ctor<br>
 };<br>
----------------<br>
I'm not super psyched about adding to this enum. What do you think about adding custom entry points to the MS C++ ABI that just tweak internal bools?</blockquote><div><br></div>We should do the same with Ctor_Comdat.  That can be done in a follow up change.<br><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
================<br>
Comment at: lib/AST/MicrosoftMangle.cpp:782-788<br>
@@ -781,9 +784,9 @@<br>
-        const auto *CD = cast<CXXConstructorDecl>(ND);<br>
-        if (CD->isDefaultConstructor()) {<br>
-          Out << "?_F";<br>
-        } else if (CD->isCopyConstructor()) {<br>
+      if (Structor == getStructor(ND)) {<br>
+        if (StructorType == Ctor_CopyingClosure) {<br>
           Out << "?_O";<br>
-        } else {<br>
-          llvm_unreachable("unexpected constructor closure!");<br>
+          return;<br>
+        }<br>
+        if (StructorType == Ctor_DefaultClosure) {<br>
+          Out << "?_F";<br>
+          return;<br>
         }<br>
-      } else {<br>
----------------<br>
Oh dear, does isCopyConstructor() return false for the variadic test case?</blockquote><div><br></div><div>It doesn't return true for templated constructors because they aren't copy constructors.  However, they are used at the catch-site; clang terms these as "copying constructors".</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<a href="http://reviews.llvm.org/D8225" target="_blank">http://reviews.llvm.org/D8225</a><br>
<br>
EMAIL PREFERENCES<br>
  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br>
<br>
<br>
</blockquote>