Link time optimization is implemented as a GCC front end for a bytecode representation of GIMPLE that is emitted in special sections of .o file
detail:
This is implemented as the GCC front end lto1 in lto/lto.c.
When collect2 detects a link set of .o / .a files with LTO information and the -flto is enabled
it invokes lto1 which reads the set of files and aggregates them into a single translation unit for optimization.