[PATCH] D152973: Reland "[gold] Add preliminary FatLTO support to the Gold plugin""

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 25 01:50:32 PDT 2023


nikic added a comment.

In D152973#4529995 <https://reviews.llvm.org/D152973#4529995>, @paulkirth wrote:

> In D152973#4529866 <https://reviews.llvm.org/D152973#4529866>, @nikic wrote:
>
>> I don't think we are going to use the FatLTO pipeline as currently implemented in Rust, due to its bad compile-time characteristics. We need a FatLTO implementation that does not require compiling the module twice.
>
> That's unfortunate, and is something I hope we can address moving forward. I vaguely recall your suggestion that after D148010 <https://reviews.llvm.org/D148010> we could probably do better w.r.t. optimizing the pipeline, is that still correct?

It would at least make things a good bit simpler, by removing thin vs full LTO differences from the equation.

> Also, out of curiosity, how does `rustc` avoid the edge cases brought up in the initial patches, like missing certain transforms for ThinLTO + SamplePGO?

I'm not sure Rust even supports SamplePGO. Maybe there is an unstable feature for it.

But the truth is that Rust doesn't have a dedicated fat LTO pipeline at all, it just runs the usual pipeline and then both embeds the final bitcode and emits object code. This is of course bad (for the same reasons the current full LTO pipeline is bad), and replacing it with a proper fat LTO pipeline would be great.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152973/new/

https://reviews.llvm.org/D152973



More information about the llvm-commits mailing list