<div dir="ltr">The following corrects the MS ABI test output:<div><br><div><div>--- a/lib/AST/MicrosoftMangle.cpp</div><div>+++ b/lib/AST/MicrosoftMangle.cpp</div><div>@@ -2329,6 +2329,7 @@ void MicrosoftMangleContextImpl::mangleTypeName(QualType T, raw_ostream &Out) {</div><div> void MicrosoftMangleContextImpl::mangleCXXCtor(const CXXConstructorDecl *D,</div><div>                                                CXXCtorType Type,</div><div>                                                raw_ostream &Out) {</div><div>+  D = cast<CXXConstructorDecl>(D->getFirstDecl());</div><div>   MicrosoftCXXNameMangler mangler(*this, Out);</div><div>   mangler.mangle(D);</div><div> }</div><div>@@ -2336,6 +2337,7 @@ void MicrosoftMangleContextImpl::mangleCXXCtor(const CXXConstructorDecl *D,</div><div> void MicrosoftMangleContextImpl::mangleCXXDtor(const CXXDestructorDecl *D,</div><div>                                                CXXDtorType Type,</div><div>                                                raw_ostream &Out) {</div><div>+  D = cast<CXXDestructorDecl>(D->getFirstDecl());</div><div>   MicrosoftCXXNameMangler mangler(*this, Out, D, Type);</div><div>   mangler.mangle(D);</div><div> }</div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 20, 2015 at 9:42 AM, David Majnemer <span dir="ltr"><<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't think this approach would handle things like:<div><br></div><div><div>int pr22217_foo;</div><div>int *b = &pr22217_foo;</div><div>extern int pr22217_foo __asm__("pr22217_bar");</div></div><div><br></div><div>With your patch, pr22217_foo gets emitted.</div><div>With gcc, pr22217_bar gets emitted.</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 20, 2015 at 7:30 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry, I attached an older version of the patch. This one has a<br>
slightly simpler test.<br>
<br>
On 20 January 2015 at 10:29, Rafael Espíndola<br>
<div><div><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>> wrote:<br>
> Currently clang will produce a @foo when given<br>
><br>
> int foo;<br>
> extern int foo __asm__("bar");<br>
><br>
> The attached patch makes it produce a @bar, which is what gcc produces.<br>
><br>
> I am confused by the output changes in the microsoft abi tests.<br>
> Hopefully someone more familiar with it can comment on why using a<br>
> more recent decl causes problems and has an idea of what should be<br>
> changed to accommodate it.<br>
><br>
> Cheers,<br>
> Rafael<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>