ldionne added a comment.

In https://reviews.llvm.org/D49240#1197149, @hans wrote:

> In https://reviews.llvm.org/D49240#1197052, @ldionne wrote:
>
> > In https://reviews.llvm.org/D49240#1196878, @hans wrote:
> >
> > > The reason we noticed this was that it caused a *50 GB* size increase of 
> > > the build output on our buildbots, which was enough to cause 
> > > infrastructure problems.
> > >
> > > This change was also committed shortly before the 7.0 branch, so it's 
> > > part of the 7.0.0 release candidates.
> > >
> > > Should we back it out until a solution is found?
> >
> >
> > The thing is -- there's no solution without changing the guarantees that 
> > libc++ make. Today, libc++ guarantees that you can link TUs that were built 
> > with different versions of libc++ together. If we remove that guarantee, 
> > then we can use linkonce_odr and solve the problem that Chromium is having.
> >
> > Is that guarantee something that Chromium is relying upon?
>
>
> I'm not sure (thakis can probably answer better), but isn't it enough to link 
> against some system libraries that might use libc++ for this to be true?


One would have to link statically against a system library that was statically 
linked against libc++ -- I don't think this happens, at least not on Darwin 
AFAICT. As soon as we cross a dylib boundary, we're safe because those symbols 
hidden from the ABI are not exported from the dylib. The only problem is when 
distributing static archives using different versions of libc++, where we don't 
want presumably ODR-equivalent symbols to be deduplicated (because they might 
not actually be ODR-equivalent).

> The previous solution, using inlining, while not very elegant didn't have 
> this giant binary size problem, so maybe it was better?

Just to be clear, it's only about the number of symbols, not actual code size.

> What should we put in the release notes, that folks should expect 
> significantly larger binaries using the 7.0.0 version?

If the current state is not acceptable, we should roll back the change and only 
put it in once we _also_ know how to allow ODR-deduplicating across TUs. We 
don't have a solution for that right now -- this was a follow-up step that was 
planned in the future since this one was semantics-changing. If the current 
state is acceptable, we can put in the release notes that significant symbol 
size increases should be expected using LLVM 7.0.0.


Repository:
  rCXX libc++

https://reviews.llvm.org/D49240



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to