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.

Macros

#define DEBUG_TYPE   "bounds-checking"
 

Typedefs

using BuilderTy = IRBuilder< TargetFolder >
 

Functions

 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
 

Variables

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

◆ DEBUG_TYPE

#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 
)
static

◆ INITIALIZE_PASS_BEGIN()

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

◆ instrumentMemAccess()

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

◆ 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"))
static

Referenced by addBoundsChecking().