Byfl v1.4 for LLVM/Clang v3.6.2
Byfl has improved a lot since version 1.3. Here are some of the highlights from the long list of changes:
-bf-data-structs
logs data-structure lifetimes.- Applications can invoke
bf_enable_counting()
explicitly to dynamically enable and disable most Byfl run-time functionality. This can be used, for example, to instrument only a single iteration of a critical loop. - Byfl's two application-invocable API functions,
bf_enable_counting()
andbf_tag_data_region()
, can be declared and prototyped with#include <byfl/byfl.h>
(a new header file). -bf-reuse-dist
, which is now properly documented, writes a Reuse distance table to the.byfl
file.- A new
-bf-strides
option tracks data access strides on a per-load/store basis and writes the results to a new Strided accesses table. - The compiler wrapper scripts honor the
-M
,-MD
,-MM
,-MMD
, and-MP
preprocessor options. - The Functions and Called functions tables include function file names and line numbers.
- A new bfbin2hpctk postprocessor converts
.byfl
files (specifically, the Functions table) to an HPCToolkit database directory. The hpcviewer GUI can be used to view the database and show Byfl data side-by-side with hardware performance counter data. - A new side effect of the
-bf-by-func
option is that the Program table will report inferred in addition to observed function returns. The former is defined as the number of calls to non-Byfl-instrumented functions, and the latter is the number ofRet
instructions executed by Byfl-instrumented functions. - A new bfbin2cgrind postprocessor converts
.byfl
files (specifically, the Functions table) into Callgrind format, suitable for visualization and interactive exploration with KCachegrind.