On Sunday, 4 December 2016 at 01:36:50 UTC, deadalnix wrote:
First, presentation:
https://www.youtube.com/watch?v=9OIEZAj243g

Some of this is available in LLVM today, and everything presented here will be in 4.0 . The long story short: ThinLTO can do most of what LTO does but with a price that is much closer to the one of a regular build than the one of a classic LTO build.

LTO optimization can devirtualize all function that do not need to be virtual, and even use profile infos to speculatively devirtualize - aka JVM grade devirtualization.

I would love to see this leveraged to finally put to rest the final vs virtual debate. If we use this tech properly, everything that do not need to be virtual can be finalized - except across shared object, which shouldn't be too much of an issue in practice.

ldc-1.1.0-beta5 --help | grep -A2 lto
  -flto             - Set LTO mode, requires linker support
    =full           - Merges all input into a single module
=thin - Parallel importing and codegen (faster than 'full') -flto-binary=<file> - Set the linker LTO plugin library file (e.g. LLVMgold.so (Unixes) or libLTO.dylib (Darwin)) -fprofile-instr-generate=<filename> - Generate instrumented code to collect execution counts (e.g. for PGO) -fprofile-instr-use=<filename> - Use instrumentation data for profile-guided optimization

Reply via email to