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