Re: Move createEliminateAvailableExternallyPass earlier

2015-09-02 Thread Teresa Johnson via cfe-commits
Hi Yaron, This is to handle the case of pre-built (real .o) files. The available externally functions are kept in the -c -flto compile (the pass isn't run) so that they are available for inlining in the LTO pipeline. If the available externally function is in a pre-built object file it wouldn't be

Re: Move createEliminateAvailableExternallyPass earlier

2015-09-02 Thread Yaron Keren via cfe-commits
r246619, thanks! About createEliminateAvailableExternallyPass for LTO, I'm missing something. At link time, aren't available externally function supposed to be, well, available as external linkage? Won't the link fail without these versions? if so, why keep the available externally versions at all

Re: Move createEliminateAvailableExternallyPass earlier

2015-09-01 Thread Teresa Johnson via cfe-commits
Hi Yaron, Thanks, moving it earlier in general seems ok to me. I originally put this right before the GlobalDCE calls because it was somewhat related. I wonder if the createEliminateAvailableExternallyPass call for the LTO pipeline should similarly be moved up closer to inlining, perhaps after any

Move createEliminateAvailableExternallyPass earlier

2015-09-01 Thread Yaron Keren via cfe-commits
Following the discussion on cfe-dev, this moves createEliminateAvailableExternallyPass earlier in the pass pipeline to save running many ModulePasses on available external functions that are thrown away anyhow. Index: lib/Transforms/IPO/PassManagerBuilder.cpp ===