https://llvm.org/bugs/show_bug.cgi?id=30401

            Bug ID: 30401
           Summary: GCC 6.2 / LLVM 3.9 name mangling discrepancy for
                    function with argument whose template argument
                    involves an ABI tag.
           Product: clang
           Version: 3.9
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangb...@nondot.org
          Reporter: gre...@fnal.gov
                CC: dgre...@apple.com, llvm-bugs@lists.llvm.org
    Classification: Unclassified

Created attachment 17269
  --> https://llvm.org/bugs/attachment.cgi?id=17269&action=edit
Code and build script to demonstrate mangling discrepancy

Overview:

The function:

void gallery::throwHandleWhyFailed(std::shared_ptr<art::Exception const>
whyFailed);

mangles to different symbol names with GCC 6.2 (new ABI) vs LLVM / CLang 3.9.0.

To reproduce:

1. Expand the provided tar file and cd into the directory created in an
environment with access to both GCC 6.2.0 and LLVM 3.9.0 (the docker image
described in the included Dockerfile or found on github as fnalart/llvm:3.9
provides just such an environment).
2. Invoke the provided build.sh script with the appropriate compiler name (e.g.
g++-6 or clang++-3.9) as argument. If you are operating in a different
environment than the above-mentioned docker image, you may need to tweak the
options provided to clang to use the intended GCC standard library.

Using the fnalart/llvm:3.9 docker image, one gets:

$ docker run --rm -v `pwd`:/work -w /work fnalart/llvm:3.9 ./build.sh g++-6
_ZN7gallery20throwHandleWhyFailedESt10shared_ptrIKN3cet15coded_exceptionIN3art6errors10ErrorCodesEXadL_ZNS3_15ExceptionDetail9translateB5cxx11ES5_EEEEE
gallery::throwHandleWhyFailed(std::shared_ptr<cet::coded_exception<art::errors::ErrorCodes,
&art::ExceptionDetail::translate[abi:cxx11]> const>)

and

$ docker run --rm -v `pwd`:/work -w /work fnalart/llvm:3.9 ./build.sh
clang++-3.9
_ZN7gallery20throwHandleWhyFailedESt10shared_ptrIKN3cet15coded_exceptionIN3art6errors10ErrorCodesEXadL_ZNS3_15ExceptionDetail9translateB5cxx11ENS6_6errors10ErrorCodesEEEEEE
gallery::throwHandleWhyFailed(std::shared_ptr<cet::coded_exception<art::errors::ErrorCodes,
&art::ExceptionDetail::translate[abi:cxx11]> const>)

Note that c++filt demangles the symbol in each case to the same C++ function
signature.

This has also been filed as https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77597.
As of this writing however, the opinion appears to be that this is something
Clang should change, rather than GCC.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to