clang
3.9.0
|
#include "CodeGenPGO.h"
#include "CodeGenFunction.h"
#include "CoverageMappingGen.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/AST/StmtVisitor.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MD5.h"
Go to the source code of this file.
Functions | |
static llvm::cl::opt< bool > | EnableValueProfiling ("enable-value-profiling", llvm::cl::ZeroOrMore, llvm::cl::desc("Enable value profiling"), llvm::cl::init(false)) |
static uint64_t | calculateWeightScale (uint64_t MaxWeight) |
Calculate what to divide by to scale weights. More... | |
static uint32_t | scaleBranchWeight (uint64_t Weight, uint64_t Scale) |
Scale an individual branch weight (and add 1). More... | |
|
static |
Calculate what to divide by to scale weights.
Given the maximum weight, calculate a divisor that will scale all the weights to strictly less than UINT32_MAX.
Definition at line 827 of file CodeGenPGO.cpp.
|
static |
Referenced by clang::CodeGen::CodeGenPGO::valueProfile().
|
static |
Scale an individual branch weight (and add 1).
Scale a 64-bit weight down to 32-bits using Scale
.
According to Laplace's Rule of Succession, it is better to compute the weight based on the count plus 1, so universally add 1 to the value.
Scale
was calculated by calculateWeightScale() with a weight no greater than Weight
. Definition at line 840 of file CodeGenPGO.cpp.