Ball Larus path profiling requires temporarily changing the CFG by replacing backedges (such as those caused by loops) in order to determine instrumentation placement, and attaching increments to edges [Ball96]. As far as I understand the CFG available through the BasicBlock class directly corresponds to the IR. I would rather not change the IR except to insert the profiling code. So, is there a graph structure that can be reused for such a purpose? Am I approaching this the wrong way? Thanks [Ball96] T. Ball and J. R. Larus. "Efficient Path Profiling." International Symposium on Microarchitecture, pages 46-57, 1996. http://portal.acm.org/citation.cfm?id=243857