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