PGO: Statically generate data structures
In instrumentation-based profiling, we need a set of data structures to represent the counters. Previously, these were built up during static initialization. Now, they're shoved into a specially-named section so that they show up as an array. As a consequence of the reorganizing symbols, instrumentation data structures for linkonce functions are now correctly coalesced. This is the first step in a larger project to minimize runtime overhead and dependencies in instrumentation-based profilng. The larger picture includes removing all initialization overhead and making the dependency on libc optional. <rdar://problem/15943240> llvm-svn: 204080
This commit is contained in:
@@ -1199,7 +1199,7 @@ CodeGenFunction::GenerateBlockFunction(GlobalDecl GD,
|
||||
RegionCounter Cnt = getPGORegionCounter(blockDecl->getBody());
|
||||
Cnt.beginRegion(Builder);
|
||||
EmitStmt(blockDecl->getBody());
|
||||
PGO.emitWriteoutFunction();
|
||||
PGO.emitInstrumentationData();
|
||||
PGO.destroyRegionCounters();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user