[cfe-dev] Where do we really need mangled names

David Blaikie dblaikie at gmail.com
Sat Feb 15 14:57:07 PST 2014


So when comparing Clang's debug info strings to GCC's I came across a
couple of disparities hinging on the inclusion of linkage names on certain
functions. Here are a few differences:

* Clang includes linkage names on file-local (static or anon namespace)
functions. GCC does not.
* Clang does not include the linkage name of member functions of
function-local classes. GCC does, if the function is
non-static/non-anonymous namespace and inline (ie: the member function has
linkonce-odr linkage, not internal linkage)
* Clang does not include the linkage name for constructors and destructors
- this may be necessary due to the difference (GCC duplicates, Clang has
one version call the other) in implementations, but I doubt it. I assume we
still emit multiple member functions, one to describe each version of the
ctor/dtor we're emitting.

It looks like at least for the first case, this may've been deliberate (
http://llvm.org/viewvc/llvm-project?view=revision&revision=154570 which
doesn't explain why and points to rdar://11079003 which Jim Grosbach told
didn't have a great deal more context) but I don't have enough context to
understand why and whether it's just a GCC bug that they don't emit it, or
something tools should handle better, etc.

So - any thoughts on the disparity and if/why it's necessary?

- Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140215/89bdc78d/attachment.html>


More information about the cfe-dev mailing list