LLVM  7.0.0svn
Macros | Typedefs | Functions | Variables
BoundsChecking.cpp File Reference
#include "llvm/Transforms/Instrumentation/BoundsChecking.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/MemoryBuiltins.h"
#include "llvm/Analysis/TargetFolder.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Value.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <cstdint>
#include <vector>
Include dependency graph for BoundsChecking.cpp:

Go to the source code of this file.


#define DEBUG_TYPE   "bounds-checking"


using BuilderTy = IRBuilder< TargetFolder >


 STATISTIC (ChecksAdded, "Bounds checks added")
 STATISTIC (ChecksSkipped, "Bounds checks skipped")
 STATISTIC (ChecksUnable, "Bounds checks unable to add")
template<typename GetTrapBBT >
static bool instrumentMemAccess (Value *Ptr, Value *InstVal, const DataLayout &DL, TargetLibraryInfo &TLI, ObjectSizeOffsetEvaluator &ObjSizeEval, BuilderTy &IRB, GetTrapBBT GetTrapBB)
 Adds run-time bounds checks to memory accessing instructions. More...
static bool addBoundsChecking (Function &F, TargetLibraryInfo &TLI)
 INITIALIZE_PASS_BEGIN (BoundsCheckingLegacyPass, "bounds-checking", "Run-time bounds checking", false, false) INITIALIZE_PASS_END(BoundsCheckingLegacyPass


static cl::opt< boolSingleTrapBB ("bounds-checking-single-trap", cl::desc("Use one trap block per function"))
bounds checking
bounds Run time bounds false

Macro Definition Documentation


#define DEBUG_TYPE   "bounds-checking"

Definition at line 38 of file BoundsChecking.cpp.

Typedef Documentation

◆ BuilderTy

Definition at line 47 of file BoundsChecking.cpp.

Function Documentation

◆ addBoundsChecking()

static bool addBoundsChecking ( Function F,
TargetLibraryInfo TLI 


INITIALIZE_PASS_BEGIN ( BoundsCheckingLegacyPass  ,
"bounds-checking ,
"Run-time bounds checking ,
false  ,

◆ instrumentMemAccess()

template<typename GetTrapBBT >
static bool instrumentMemAccess ( Value Ptr,
Value InstVal,
const DataLayout DL,
TargetLibraryInfo TLI,
ObjectSizeOffsetEvaluator ObjSizeEval,
BuilderTy IRB,
GetTrapBBT  GetTrapBB 

◆ STATISTIC() [1/3]

STATISTIC ( ChecksAdded  ,
"Bounds checks added"   

◆ STATISTIC() [2/3]

STATISTIC ( ChecksSkipped  ,
"Bounds checks skipped"   

◆ STATISTIC() [3/3]

STATISTIC ( ChecksUnable  ,
"Bounds checks unable to add"   

Variable Documentation

◆ checking

bounds Run time bounds checking

Definition at line 223 of file BoundsChecking.cpp.

◆ false

bounds Run time bounds false

Definition at line 223 of file BoundsChecking.cpp.

◆ SingleTrapBB

cl::opt<bool> SingleTrapBB("bounds-checking-single-trap", cl::desc("Use one trap block per function"))

Referenced by addBoundsChecking().