Profiling monitors a program’s execution flow via the insertion of counters at key points in the program. Profiling information can then be used by a compiler’s optimization passes to increase the performance of frequently executed sections of code. This document describes the implementation of edge profiling, path profiling and a method with which to combine profiles in the Low Level Virtual Machine (LLVM) compiler infrastructure.
"Implementation of Path Profiling in the Low-Level Virtual-Machine (LLVM) Compiler Infrastructure"
Adam Preuss
Technical Report #10-05, University of Alberta, December, 2010, Alberta, Canada