On Jun 9, 2012, at 5:49 PM, Richard Smith wrote:

On Sat, Jun 9, 2012 at 2:41 PM, Charles Davis <[email protected]> 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.
Now how did that get past? Fixed.

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

Several of your "cannot mangle this yet" diagnostics have unwanted fallthrough. Should these be fatal?
I've fixed all of them to return early.

I would remove "Oddly enough, " throughout.
Done. It is too informal anyway.

Is there a reason to create a new test file rather than adding tests to mangle-ms.cpp?
Because the corresponding tests for the Itanium ABI (on which these are based) were in a separate file (cf. <clang>/test/CodeGenCXX/mangle-abi-examples.cpp).

New patch attached. OK to commit?

Chip

Attachment: ms-mangle-grab-bag.diff
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to