[TCWG-1424] Investigation into profile and size optimisations
- Completed the pass and got it working on both the old and new pass managers - Spent quite a bit of time trying to understand how llvm classifies hot and cold functions, a lot of the details are not documented well or at all. - Found another problem with --pgo and lnt when the exec-multisample option is used. I've applied a local fix to stop the extra runs from triggering profile collection - Upstream lnt doesn't seem to collect code size information for a benchmarks-only run, wrote a script to measure and inject it back. - Got some benchmark figures on the pass. Difficult to interpret as I suspect that too many of the benchmarks are too small to give useful results. There seemed to be some huge regressions when a critical function stopped getting inlined, but overall performance was comparable. I need to find some better benchmarks and learn how to make sense of results.
[TCWG-1368] Buildbot failure investigation Decided to take a look as an exercise in using the packet.net machines. Some libfuzzer tests are hanging or taking an extremely long time to run on aarch64. Reproduced on one of TCWGs packet.net machines. At early stage of investigation right now as there doesn't seem to be any obvious answers or easily available diagnostics.