clang API Documentation

Functions
CodeGenPGO.cpp File Reference
#include "CodeGenPGO.h"
#include "CodeGenFunction.h"
#include "CoverageMappingGen.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/AST/StmtVisitor.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/ProfileData/InstrProfReader.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MD5.h"
Include dependency graph for CodeGenPGO.cpp:

Go to the source code of this file.

Functions

static llvm::Function * getRegisterFunc (CodeGenModule &CGM)
static llvm::BasicBlock * getOrInsertRegisterBB (CodeGenModule &CGM)
static llvm::Constant * getOrInsertRuntimeRegister (CodeGenModule &CGM)
static bool isMachO (const CodeGenModule &CGM)
static StringRef getCountersSection (const CodeGenModule &CGM)
static StringRef getNameSection (const CodeGenModule &CGM)
static StringRef getDataSection (const CodeGenModule &CGM)
static void emitRuntimeHook (CodeGenModule &CGM)
static uint64_t calculateWeightScale (uint64_t MaxWeight)
 Calculate what to divide by to scale weights.
static uint32_t scaleBranchWeight (uint64_t Weight, uint64_t Scale)
 Scale an individual branch weight (and add 1).

Function Documentation

static uint64_t calculateWeightScale ( uint64_t  MaxWeight) [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 1019 of file CodeGenPGO.cpp.

Referenced by clang::CodeGen::CodeGenPGO::createBranchWeights().

static void emitRuntimeHook ( CodeGenModule CGM) [static]
static StringRef getCountersSection ( const CodeGenModule CGM) [static]

Definition at line 118 of file CodeGenPGO.cpp.

References isMachO().

static StringRef getDataSection ( const CodeGenModule CGM) [static]

Definition at line 126 of file CodeGenPGO.cpp.

References isMachO().

static StringRef getNameSection ( const CodeGenModule CGM) [static]

Definition at line 122 of file CodeGenPGO.cpp.

References isMachO().

static llvm::BasicBlock* getOrInsertRegisterBB ( CodeGenModule CGM) [static]
static llvm::Constant* getOrInsertRuntimeRegister ( CodeGenModule CGM) [static]
static llvm::Function* getRegisterFunc ( CodeGenModule CGM) [static]
static bool isMachO ( const CodeGenModule CGM) [static]
static uint32_t scaleBranchWeight ( uint64_t  Weight,
uint64_t  Scale 
) [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.

Precondition:
Scale was calculated by calculateWeightScale() with a weight no greater than Weight.

Definition at line 1032 of file CodeGenPGO.cpp.

Referenced by clang::CodeGen::CodeGenPGO::createBranchWeights().