diff options
| author | Xinliang David Li <davidxl@google.com> | 2016-02-04 19:54:17 +0000 |
|---|---|---|
| committer | Xinliang David Li <davidxl@google.com> | 2016-02-04 19:54:17 +0000 |
| commit | 5527a9dd42f0a9e09353699252f0d4fcd001923b (patch) | |
| tree | d9dfc088971308d18a8f47a7c6f10a35dc1df592 /clang/lib/CodeGen/CodeGenPGO.cpp | |
| parent | 97c2868362c5e021fc24d2b7825fa06511baa56f (diff) | |
| download | bcm5719-llvm-5527a9dd42f0a9e09353699252f0d4fcd001923b.tar.gz bcm5719-llvm-5527a9dd42f0a9e09353699252f0d4fcd001923b.zip | |
[PGO] code simplification: use existing VP annotation API /NFC
llvm-svn: 259819
Diffstat (limited to 'clang/lib/CodeGen/CodeGenPGO.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenPGO.cpp | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/clang/lib/CodeGen/CodeGenPGO.cpp b/clang/lib/CodeGen/CodeGenPGO.cpp index c59d2d1b27f..2d46adfce13 100644 --- a/clang/lib/CodeGen/CodeGenPGO.cpp +++ b/clang/lib/CodeGen/CodeGenPGO.cpp @@ -780,35 +780,11 @@ void CodeGenPGO::valueProfile(CGBuilderTy &Builder, uint32_t ValueKind, // pairs for each function. if (NumValueSites[ValueKind] >= ProfRecord->getNumValueSites(ValueKind)) return; - uint32_t NV = ProfRecord->getNumValueDataForSite(ValueKind, - NumValueSites[ValueKind]); - std::unique_ptr<InstrProfValueData[]> VD = - ProfRecord->getValueForSite(ValueKind, NumValueSites[ValueKind]); - uint64_t Sum = 0; - for (uint32_t I = 0; I < NV; ++I) - Sum += VD[I].Count; + llvm::annotateValueSite(CGM.getModule(), *ValueSite, *ProfRecord, + (llvm::InstrProfValueKind)ValueKind, + NumValueSites[ValueKind]); - llvm::LLVMContext &Ctx = CGM.getLLVMContext(); - llvm::MDBuilder MDHelper(Ctx); - SmallVector<llvm::Metadata*, 3> Vals; - Vals.push_back(MDHelper.createString("VP")); - Vals.push_back(MDHelper.createConstant( - llvm::ConstantInt::get(llvm::Type::getInt32Ty(Ctx), ValueKind))); - Vals.push_back(MDHelper.createConstant( - llvm::ConstantInt::get(llvm::Type::getInt64Ty(Ctx), Sum))); - - uint32_t MDCount = 3; - for (uint32_t I = 0; I < NV; ++I) { - Vals.push_back(MDHelper.createConstant( - llvm::ConstantInt::get(llvm::Type::getInt64Ty(Ctx), VD[I].Value))); - Vals.push_back(MDHelper.createConstant( - llvm::ConstantInt::get(llvm::Type::getInt64Ty(Ctx), VD[I].Count))); - if (--MDCount == 0) - break; - } - ValueSite->setMetadata( - llvm::LLVMContext::MD_prof, llvm::MDNode::get(Ctx, Vals)); NumValueSites[ValueKind]++; } } |

