CodeGen: Initial instrumentation based PGO implementation
llvm-svn: 198640
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "CGOpenCLRuntime.h"
|
||||
#include "CodeGenFunction.h"
|
||||
#include "CodeGenTBAA.h"
|
||||
#include "CodeGenPGO.h"
|
||||
#include "TargetInfo.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CharUnits.h"
|
||||
@@ -77,7 +78,8 @@ CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,
|
||||
ABI(createCXXABI(*this)), VMContext(M.getContext()), TBAA(0),
|
||||
TheTargetCodeGenInfo(0), Types(*this), VTables(*this), ObjCRuntime(0),
|
||||
OpenCLRuntime(0), CUDARuntime(0), DebugInfo(0), ARCData(0),
|
||||
NoObjCARCExceptionsMetadata(0), RRData(0), CFConstantStringClassRef(0),
|
||||
NoObjCARCExceptionsMetadata(0), RRData(0), PGOData(0),
|
||||
CFConstantStringClassRef(0),
|
||||
ConstantStringClassRef(0), NSConstantStringType(0),
|
||||
NSConcreteGlobalBlock(0), NSConcreteStackBlock(0), BlockObjectAssign(0),
|
||||
BlockObjectDispose(0), BlockDescriptorType(0), GenericBlockLiteralType(0),
|
||||
@@ -131,6 +133,9 @@ CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,
|
||||
if (C.getLangOpts().ObjCAutoRefCount)
|
||||
ARCData = new ARCEntrypoints();
|
||||
RRData = new RREntrypoints();
|
||||
|
||||
if (!CodeGenOpts.InstrProfileInput.empty())
|
||||
PGOData = new PGOProfileData(*this, CodeGenOpts.InstrProfileInput);
|
||||
}
|
||||
|
||||
CodeGenModule::~CodeGenModule() {
|
||||
@@ -2181,6 +2186,10 @@ void CodeGenModule::EmitGlobalFunctionDefinition(GlobalDecl GD,
|
||||
AddGlobalDtor(Fn, DA->getPriority());
|
||||
if (D->hasAttr<AnnotateAttr>())
|
||||
AddGlobalAnnotations(D, Fn);
|
||||
|
||||
llvm::Function *PGOInit = CodeGenPGO::emitInitialization(*this);
|
||||
if (PGOInit)
|
||||
AddGlobalCtor(PGOInit, 0);
|
||||
}
|
||||
|
||||
void CodeGenModule::EmitAliasDefinition(GlobalDecl GD) {
|
||||
|
||||
Reference in New Issue
Block a user