<div dir="ltr">FYI, this caused a -Wdeclaration-after-statement warning that I fixed in r249652.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 7, 2015 at 5:01 PM, Ehsan Akhgari via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ehsan<br>
Date: Wed Oct  7 19:01:20 2015<br>
New Revision: 249639<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=249639&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=249639&view=rev</a><br>
Log:<br>
Make clang_Cursor_getMangling not mangle if the declaration isn't mangled<br>
<br>
Right now clang_Cursor_getMangling will attempt to mangle any<br>
declaration, even if the declaration isn't mangled (extern C).  This<br>
results in a partially mangled name which isn't useful for much. This<br>
patch makes clang_Cursor_getMangling return an empty string if the<br>
declaration isn't mangled.<br>
<br>
Patch by Michael Wu <<a href="mailto:mwu@mozilla.com">mwu@mozilla.com</a>>.<br>
<br>
Modified:<br>
    cfe/trunk/test/Index/print-mangled-name.cpp<br>
    cfe/trunk/tools/c-index-test/c-index-test.c<br>
    cfe/trunk/tools/libclang/CIndex.cpp<br>
<br>
Modified: cfe/trunk/test/Index/print-mangled-name.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/print-mangled-name.cpp?rev=249639&r1=249638&r2=249639&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/print-mangled-name.cpp?rev=249639&r1=249638&r2=249639&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/print-mangled-name.cpp (original)<br>
+++ cfe/trunk/test/Index/print-mangled-name.cpp Wed Oct  7 19:01:20 2015<br>
@@ -29,3 +29,8 @@ int foo(S, S&);<br>
 // ITANIUM: mangled=_Z3foo1SRS_<br>
 // MACHO: mangled=__Z3foo1SRS_<br>
 // MICROSOFT: mangled=?foo@@YAHUS<br>
+<br>
+extern "C" int foo(int);<br>
+// ITANIUM: mangled=foo<br>
+// MACHO: mangled=_foo<br>
+// MICROSOFT: mangled=_foo<br>
<br>
Modified: cfe/trunk/tools/c-index-test/c-index-test.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=249639&r1=249638&r2=249639&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=249639&r1=249638&r2=249639&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/c-index-test/c-index-test.c (original)<br>
+++ cfe/trunk/tools/c-index-test/c-index-test.c Wed Oct  7 19:01:20 2015<br>
@@ -1429,6 +1429,8 @@ static enum CXChildVisitResult PrintType<br>
<br>
 static enum CXChildVisitResult PrintMangledName(CXCursor cursor, CXCursor p,<br>
                                                 CXClientData d) {<br>
+  if (clang_isUnexposed(clang_getCursorKind(cursor)))<br>
+    return CXChildVisit_Recurse;<br>
   CXString MangledName;<br>
   PrintCursor(cursor, NULL);<br>
   MangledName = clang_Cursor_getMangling(cursor);<br>
<br>
Modified: cfe/trunk/tools/libclang/CIndex.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=249639&r1=249638&r2=249639&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=249639&r1=249638&r2=249639&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/libclang/CIndex.cpp (original)<br>
+++ cfe/trunk/tools/libclang/CIndex.cpp Wed Oct  7 19:01:20 2015<br>
@@ -3890,7 +3890,11 @@ CXString clang_Cursor_getMangling(CXCurs<br>
<br>
   std::string FrontendBuf;<br>
   llvm::raw_string_ostream FrontendBufOS(FrontendBuf);<br>
-  MC->mangleName(ND, FrontendBufOS);<br>
+  if (MC->shouldMangleDeclName(ND)) {<br>
+    MC->mangleName(ND, FrontendBufOS);<br>
+  } else {<br>
+    ND->printName(FrontendBufOS);<br>
+  }<br>
<br>
   // Now apply backend mangling.<br>
   std::unique_ptr<llvm::DataLayout> DL(<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">~Craig</div>
</div>