majnemer added inline comments.

================
Comment at: lib/AST/MicrosoftMangle.cpp:888-891
         auto EnumeratorI = ED->enumerator_begin();
-        assert(EnumeratorI != ED->enumerator_end());
-        Name += "<unnamed-enum-";
-        Name += EnumeratorI->getName();
+        if (EnumeratorI == ED->enumerator_end()) {
+          Name += "<unnamed-tag";
+        } else {
----------------
Thinking about it some more, it'd be better if we handled this like the else 
case:
  Name += "<unnamed-type-$S";
  Name += llvm::utostr(Context.getAnonymousStructId(TD) + 1);

Reason being that something like:
  struct S {
    enum {};
    enum {};
  };

Would otherwise end up with two identical mangles.

This would also make us more consistent with other mangles, for example:
  enum {} x;
  struct {} y;

These are mangled as: <unnamed-type-x> and <unnamed-type-y>.


https://reviews.llvm.org/D47875



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to