[PATCH] D51443: [dsymutil] Remove non-determinism.

Jonas Devlieghere via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 6 10:05:51 PDT 2018


JDevlieghere added a comment.

In https://reviews.llvm.org/D51443#1225819, @aprantl wrote:

> That size difference is not big. (That is with a -gmodules -fcxxmodules build, right?) Are we concerened that -j1 will create a different but semantically equivalent output?Yu


Yup. Why would -j1 generate different output? With this patch it's actually the other way around, we used to generate different output without threading, but now we do the same thing in both cases because we use the offset which is computed before.

In https://reviews.llvm.org/D51443#1225999, @friss wrote:

> In https://reviews.llvm.org/D51443#1225644, @JDevlieghere wrote:
>
> > dSYM for a clang modules build:
> >
> >   $ stat -f%z tot/Contents/Resources/DWARF/clang
> >   962974260
> >  
> >   $ stat -f%z differential/Contents/Resources/DWARF/clang
> >   962974305
> >
> >
> > I understand the difference would be larger for an Objective-C project, so I'll try to benchmark that as well.
>
>
> It doesn't hurt to check, but the difference should be smaller when using Obj-C modules. The reason is that for ObjC modules everything will be pruned in the skeleton CUs, everything gets uniqued to the module debug info at the beginning. With C++, template instantiations are not in the module debug info, so they could be uniqued afterwards (and won't with this change). I'm actually surprised that the difference is not bigger for clang.


Ah, I must have misunderstood then when we talked. Anyway, even better then :-)


https://reviews.llvm.org/D51443





More information about the llvm-commits mailing list