r194296 - Use rauw for all discardable aliases, not just linkonce_odr.

Joerg Sonnenberger joerg at britannica.bec.de
Thu Nov 21 12:16:39 PST 2013


On Thu, Nov 21, 2013 at 01:53:17PM +0100, Joerg Sonnenberger wrote:
> On Fri, Nov 08, 2013 at 11:46:20PM -0000, Rafael Espindola wrote:
> > Author: rafael
> > Date: Fri Nov  8 17:46:20 2013
> > New Revision: 194296
> > 
> > URL: http://llvm.org/viewvc/llvm-project?rev=194296&view=rev
> > Log:
> > Use rauw for all discardable aliases, not just linkonce_odr.
> 
> This breaks boost::locale and possibly other things. Attached is a test
> case. Compile with -O2 -std=c++11 before and after and look for
>     std::__1::moneypunct_byname<char, false>::~moneypunct_byname
> in the nm -C output.

So the short version is that ~moneypunct_byname gets emitted as weak-odr
hidden in libc++'s locale.c. Whether LLVM uses the (trivial) destructor
or not depends on optimisation and I don't see any fundamental change
from this revision, even though it breaks the test case.

Howard -- should ~moneypunct_byname be part of libc++ or not? It
currently isn't and that seems to break when LLVM wants to use it.

Joerg



More information about the cfe-commits mailing list