Refactor PGO code in preparation for handling non-C/C++ code.
Move the PGO.assignRegionCounters() call out of StartFunction, because that function is called from many places where it does not make sense to do PGO instrumentation (e.g., compiler-generated helper functions). Change several functions to take a StringRef argument for the unique name associated with a function, so that the name can be set differently for things like Objective-C methods and block literals. llvm-svn: 203073
This commit is contained in:
@@ -589,7 +589,6 @@ void CodeGenFunction::StartFunction(GlobalDecl GD,
|
||||
if (CGM.getCodeGenOpts().InstrumentForProfiling)
|
||||
EmitMCountInstrumentation();
|
||||
|
||||
PGO.assignRegionCounters(GD);
|
||||
if (CGM.getPGOData() && D) {
|
||||
// Turn on InlineHint attribute for hot functions.
|
||||
if (CGM.getPGOData()->isHotFunction(CGM.getMangledName(GD)))
|
||||
@@ -771,6 +770,7 @@ void CodeGenFunction::GenerateCode(GlobalDecl GD, llvm::Function *Fn,
|
||||
StartFunction(GD, ResTy, Fn, FnInfo, Args, BodyRange.getBegin());
|
||||
|
||||
// Generate the body of the function.
|
||||
PGO.assignRegionCounters(GD.getDecl(), CGM.getMangledName(GD));
|
||||
if (isa<CXXDestructorDecl>(FD))
|
||||
EmitDestructorBody(Args);
|
||||
else if (isa<CXXConstructorDecl>(FD))
|
||||
@@ -831,7 +831,7 @@ void CodeGenFunction::GenerateCode(GlobalDecl GD, llvm::Function *Fn,
|
||||
if (!CurFn->doesNotThrow())
|
||||
TryMarkNoThrow(CurFn);
|
||||
|
||||
PGO.emitWriteoutFunction(CurGD);
|
||||
PGO.emitWriteoutFunction(CGM.getMangledName(CurGD));
|
||||
PGO.destroyRegionCounters();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user