GSOC ThinLTO Proposal

Hey All,

My name is Charles, and I’m interested in working on LLVM for GSOC. I watched the 2016 LLVM conference ThinLTO talk and found it super interesting. I’d like to work on it for GSOC.

Since I’m currently working on my proposal, I talked\ with Mehdi on IRC to learn more about the project and find what kind of contribution would be useful. He mentioned that the big pieces of work right now are refactoring (primarily to get out build statistics) and improving performance by benchmarking ThinLTO against MonolithicLTO to finding what optimizations should be added to ThinLTO.

I’d be interested in working on either of these problems for my GSOC project, but wanted to find out which took priority right now so I can contribute something useful. I’ve got good C/C++ skills and a great interest in compilers, so I’m excited to learn more about LLVM. Let me know what thoughts you have and which parts of the project it would make the most sense for me to work on.


  • Charles Saternos

Given the fact that the deadline is approaching I’d suggest to decide which is the most interesting project for you and write a proposal. Try to contact the mentor as soon as possible to give you some feedback about the draft. Cheers, Vassil

Hi Charles,

Thanks for your interest in ThinLTO! Sorry for the late response. I agree with Vassil, you can pick the one that is of most interest to you and go ahead and submit a proposal. I think for the two possibilities you discussed with Mehdi, it depends on whether you want to work on performance tuning or not. I’m not sure which type of build statistics Mehdi was suggesting, but likely it is something useful that we are lacking currently!


I think I was following up a discussion I had with Matthias about how all the statistics and the timers in LLVM are global variables and not really suitable for ThinLTO that processes multiple modules in parallel.
We’d thought ideally each ThinLTO backend would hold their own Timers and Statistics context, using a manager that could for instance be registered in the context.

Then having the ability to produce good report about how much time is spent in which modules or where could be useful, as well as how much is inlined compared to how much was predicted (I guess this is mostly polishing / plumbing what Piotr did). We could also have more informations out of the thin-link maybe?

I think the performance work is likely more interesting and easier to manage as a GSOC project. But it requires someone who can work and learn quite independently considering the remote nature of GSOC.

My 2 cents,