The new message is, I've had reports from users that the ``current'' gcc -a -ggdb format reverted so that tcovsuif is still useful. I haven't checked it out (I gotta graduate soon!). Any feedback is useful!
TCOVSUIF is a simple profiling system for use with the SUIF Compiler System from Stanford University. Basically, it takes the basic block counts produced by an executable compiled with gcc -a, correlates that information with the tree_nodes in the SUIF representation of the program, and records that information in annotations in the SUIF.
Requirements:
- Solaris or SunOS (gcc does not support the `-a' option on other systems)
- SUIF 1.1.2 (1.1.1 seems to work but has not been thoroughly tested)
Improvements over old version of TCOVSUIF:
- Does not require cc, acc, or tcov
- Requires no modifications to existing SUIF passes
We use the profiling information for doing cost/benefit analyses to decide which parts of a program should be mapped to reconfigurable hardware resources. At the coarse level, the number of times a loop executes gives some indication of how significant it is to overall execution time.
At a finer level, we use a form of hyperblock scheduling [1] (something like trace scheduling but extended for architectures supporting predicated execution), so we use the profiling information to help decide which basic blocks should be included in the hyperblock -- this hyperblock is what gets implemented in the reconfigurable hardware. See this paper for more info or this web page for more general information.
[1] "Effective Compiler Support for Predicated Execution Using the Hyperblock", Scott Mahlke & others in the IMPACT Compiler Group, MICRO'25.