<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 9, 2012, at 5:49 PM, Richard Smith wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Sat, Jun 9, 2012 at 2:41 PM, Charles Davis <span dir="ltr"><<a href="mailto:cdavis@mymail.mines.edu" target="_blank">cdavis@mymail.mines.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
This is a grab bag of various fixes to the VC++ name mangler.<br>
<br>
- 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.<br>
- 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.<br>
- 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.<br>
<br>
This is a big patch, so I wanted to run it past the list before I commit. OK to commit?<br></blockquote><div><br></div><div>@@ -1087,10 +1211,22 @@</div><div><div>       Dimensions.push_back(CAT->getSize());</div><div>
       ElementTy = CAT->getElementType();</div><div>     } else if (ElementTy->isVariableArrayType()) {</div><div>-      llvm_unreachable("Don't know how to mangle VLAs!");</div><div>+      const VariableArrayType *VAT =</div>
<div>+        static_cast<const VariableArrayType *>(ElementTy.getTypePtr());</div></div><div><br></div><div>Don't do this, use ASTContext::getAsVariableArrayType(ElementTy) instead.</div></div></blockquote>Now how did that get past? Fixed.<br><blockquote type="cite"><div class="gmail_quote"><div><br></div><div>Can you use a SmallVector<TemplateArgumentLoc> rather than allocating ASTTemplateArgumentListInfo objects in isTemplate?</div></div></blockquote>Done.<br><blockquote type="cite"><div class="gmail_quote">
<div><br></div><div>Several of your "cannot mangle this yet" diagnostics have unwanted fallthrough. Should these be fatal?</div></div></blockquote>I've fixed all of them to return early.<br><blockquote type="cite"><div class="gmail_quote"><div><br></div><div>I would remove "Oddly enough, " throughout.</div></div></blockquote>Done. It is too informal anyway.<br><blockquote type="cite"><div class="gmail_quote"><div>
<br></div><div>Is there a reason to create a new test file rather than adding tests to mangle-ms.cpp?</div></div>
</blockquote></div>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).<div><br></div><div>New patch attached. OK to commit?</div><div><br></div><div>Chip</div><div></div></body></html>