r249639 - Make clang_Cursor_getMangling not mangle if the declaration isn't mangled
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 7 20:41:10 PDT 2015
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 at 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 <mwu at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
--
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151007/a3166e34/attachment.html>
More information about the cfe-commits
mailing list