diff options
author | Justin Bogner <mail@justinbogner.com> | 2014-04-10 18:13:13 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2014-04-10 18:13:13 +0000 |
commit | f2ea775ed9ec93ac5402d226d1841443555e5421 (patch) | |
tree | 6f325b2c0f7b110f7571a4fd723a19cd422a9996 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 582e4f74da8be623d3ca93a9cbb386184105b987 (diff) | |
download | bcm5719-llvm-f2ea775ed9ec93ac5402d226d1841443555e5421.tar.gz bcm5719-llvm-f2ea775ed9ec93ac5402d226d1841443555e5421.zip |
CodeGen: Move PGO initialization into Release()
Emitting the PGO initialization in EmitGlobalFunctionDefinition is
inefficient, since this only has an effect once per module. We move
this to Release() with the rest of the once-per-module logic.
llvm-svn: 205977
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 2d877389adf..6ea60ba1c0d 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -283,6 +283,9 @@ void CodeGenModule::Release() { if (ObjCRuntime) if (llvm::Function *ObjCInitFunction = ObjCRuntime->ModuleInitFunction()) AddGlobalCtor(ObjCInitFunction); + if (getCodeGenOpts().ProfileInstrGenerate) + if (llvm::Function *PGOInit = CodeGenPGO::emitInitialization(*this)) + AddGlobalCtor(PGOInit, 0); EmitCtorList(GlobalCtors, "llvm.global_ctors"); EmitCtorList(GlobalDtors, "llvm.global_dtors"); EmitGlobalAnnotations(); @@ -2218,10 +2221,6 @@ 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) { |