[PATCH] D25854: [lto] Kill undefined extern_weak declarations before opt

Mehdi AMINI via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 20 18:32:35 PDT 2016


mehdi_amini added inline comments.


================
Comment at: lib/LTO/LTO.cpp:346
       continue;
     if (Res.Prevailing && GV) {
       Keep.push_back(GV);
----------------
pcc wrote:
> mehdi_amini wrote:
> > pcc wrote:
> > > I would have thought that you could keep track of the undefined symbols in a local variable here and RAUW them in a loop below. That way, you can avoid the global tracking. 
> > How do you address ThinLTO?
> > 
> > Which needs to be added to the patch BTW.
> > How do you address ThinLTO?
> 
> The way I see this feature eventually being added to ThinLTO is:
> - decouple LLVM linkages from ThinLTO summary linkages
> - (orthogonally: represent "drop" as another type of linkage -- this would allow us to drop unchosen linkonce or weak (non-odr) definitions)
> - add a new "linkage" (at this point we can probably call it a resolution) which represents an undefined extern_weak.
> - copy all resolution information into the summary during addThinLTO while handling each input file (during mergeFrom or thereabouts)
> 
> > Which needs to be added to the patch BTW.
> 
> It doesn't seem necessary to do so in the first patch. This is just an optimisation, and the CFI feature that relies on this does not (currently) work with ThinLTO. But @eugenis please do add a FIXME.
> The way I see this feature eventually being added to ThinLTO is [...]

Please send an RFC for such kind of changes.

> It doesn't seem necessary to do so in the first patch. 

I don't like this. One of the main reason I wanted a unified API is also exactly to avoid these kinds of discrepancies and designed these from the ground-up for LTO *and* ThinLTO.



Repository:
  rL LLVM

https://reviews.llvm.org/D25854





More information about the llvm-commits mailing list