On Sun, Jun 10, 2012 at 10:51 PM, Charles Davis <[email protected]>wrote:
> > 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 think there are now cases where two declarations mangle to the same name, which could result in a crash in IRGen after your custom error is produced, but I don't think that's a disaster given the context. > 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? > Sure. Thanks!
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
