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