Recent years have seen a surge in the popularity of binary optimisers, such as BOLT, Propeller, Janus and HALO. These tools rely on dynamic profiling information to guide the behavior of optimizations. Although effective, gathering such run-time data presents developers with some inconveniences, from unrepresentative inputs to the need to accommodate software modifications. In this paper, we revisit the static profiling technique proposed by Calder et al., in the nineties, and adapt it to binary optimizers. We show that a few modifications in that original proposal, consisting of a new selection of program features and of a regression model, is sufficient to provide some of the gains obtained using real profile data in the task of basic block placement using BOLT. We have implemented said static profiler in the BOLT binary optimizer. Experiments reveal that the static version of BOLT yields code that is almost 8.0% faster than the executables produced by clang -O3 on the same setting.
Angélica Moreira is a late 2nd year PhD student in the Computer Science Department at Federal University of Minas Gerais (UFMG). She is a member of the Compilers Laboratory (LAC), where she is advised by Professor Fernando Magno Quintão Pereira. She holds an M.Sc degree in Computer Science from the Federal University of Ouro Preto (UFOP) and a B.Sc degree in Computer Science from the Pontifical Catholic University of Minas Gerais (PUC Minas).
Angélica’s research interest lies in pursuing the design and implementation of techniques that reduce program binary size and make them run faster on heterogeneous architectures. Her research focuses on combining machine learning and compilation techniques to achieve her goal. Her dream is to contribute to a better world through the development of science and technology.