[cfe-commits] [PATCH] Grab bag of Microsoft C++ ABI Mangler fixes

Richard Smith richard at metafoo.co.uk
Sat Jun 9 16:49:47 PDT 2012


On Sat, Jun 9, 2012 at 2:41 PM, Charles Davis <cdavis at mymail.mines.edu>wrote:

> Hi,
>
> This is a grab bag of various fixes to the VC++ name mangler.
>
> - The mangler is now capable of mangling the names of virtual function
> tables--but not virtual base tables. That needs a serious refactoring of
> the ManglerContext's interface.
> - Local names are now mangled correctly--complete with anonymous numbered
> scopes. I needed this to make the virtual table test case--which I copied
> from the Itanium ABI test cases--work.
> - Instead of throwing an llvm_unreachable(), unimplemented cases now raise
> a compiler error. (This was the hardest part, since I needed source
> locations to give to the DiagnosticsEngine.
>
> This is a big patch, so I wanted to run it past the list before I commit.
> OK to commit?
>

@@ -1087,10 +1211,22 @@
       Dimensions.push_back(CAT->getSize());
       ElementTy = CAT->getElementType();
     } else if (ElementTy->isVariableArrayType()) {
-      llvm_unreachable("Don't know how to mangle VLAs!");
+      const VariableArrayType *VAT =
+        static_cast<const VariableArrayType *>(ElementTy.getTypePtr());

Don't do this, use ASTContext::getAsVariableArrayType(ElementTy) instead.

Can you use a SmallVector<TemplateArgumentLoc> rather than allocating
ASTTemplateArgumentListInfo objects in isTemplate?

Several of your "cannot mangle this yet" diagnostics have unwanted
fallthrough. Should these be fatal?

I would remove "Oddly enough, " throughout.

Is there a reason to create a new test file rather than adding tests to
mangle-ms.cpp?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120609/1e4b0172/attachment.html>


More information about the cfe-commits mailing list