aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index 77b2c97..f1fe8f9 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -2555,3 +2555,12 @@ llvm::MDNode *CodeGenFunction::createBranchWeights(Stmt::Likelihood LH) const {
llvm::MDBuilder MDHelper(CGM.getLLVMContext());
return MDHelper.createBranchWeights(LHW->first, LHW->second);
}
+
+llvm::MDNode *CodeGenFunction::createProfileOrBranchWeightsForLoop(
+ const Stmt *Cond, uint64_t LoopCount, const Stmt *Body) const {
+ llvm::MDNode *Weights = createProfileWeightsForLoop(Cond, LoopCount);
+ if (!Weights && CGM.getCodeGenOpts().OptimizationLevel)
+ Weights = createBranchWeights(Stmt::getLikelihood(Body));
+
+ return Weights;
+}