LLVM  3.7.0
Classes | Macros | Enumerations | Functions | Variables
MemoryBuiltins.cpp File Reference
#include "llvm/Analysis/MemoryBuiltins.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/Local.h"
Include dependency graph for MemoryBuiltins.cpp:

Go to the source code of this file.

Classes

struct  AllocFnsTy
 

Macros

#define DEBUG_TYPE   "memory-builtins"
 

Enumerations

enum  AllocType {
  OpNewLike = 1<<0, MallocLike = 1<<1 | OpNewLike, CallocLike = 1<<2, ReallocLike = 1<<3,
  StrDupLike = 1<<4, AllocLike = MallocLike | CallocLike | StrDupLike, AnyAlloc = AllocLike | ReallocLike
}
 

Functions

static FunctiongetCalledFunction (const Value *V, bool LookThroughBitCast)
 
static const AllocFnsTygetAllocationData (const Value *V, AllocType AllocTy, const TargetLibraryInfo *TLI, bool LookThroughBitCast=false)
 Returns the allocation data for the given value if it is a call to a known allocation function, and NULL otherwise. More...
 
static bool hasNoAliasAttr (const Value *V, bool LookThroughBitCast)
 
static ValuecomputeArraySize (const CallInst *CI, const DataLayout &DL, const TargetLibraryInfo *TLI, bool LookThroughSExt=false)
 
 STATISTIC (ObjectVisitorArgument,"Number of arguments with unsolved size and offset")
 
 STATISTIC (ObjectVisitorLoad,"Number of load instructions with unsolved size and offset")
 

Variables

static const AllocFnsTy AllocationFnData []
 

Macro Definition Documentation

#define DEBUG_TYPE   "memory-builtins"

Definition at line 32 of file MemoryBuiltins.cpp.

Enumeration Type Documentation

enum AllocType
Enumerator
OpNewLike 
MallocLike 
CallocLike 
ReallocLike 
StrDupLike 
AllocLike 
AnyAlloc 

Definition at line 34 of file MemoryBuiltins.cpp.

Function Documentation

static Value* computeArraySize ( const CallInst CI,
const DataLayout DL,
const TargetLibraryInfo TLI,
bool  LookThroughSExt = false 
)
static
static const AllocFnsTy* getAllocationData ( const Value V,
AllocType  AllocTy,
const TargetLibraryInfo TLI,
bool  LookThroughBitCast = false 
)
static
static Function* getCalledFunction ( const Value V,
bool  LookThroughBitCast 
)
static
static bool hasNoAliasAttr ( const Value V,
bool  LookThroughBitCast 
)
static
STATISTIC ( ObjectVisitorArgument  ,
"Number of arguments with unsolved size and offset"   
)
STATISTIC ( ObjectVisitorLoad  ,
"Number of load instructions with unsolved size and offset"   
)

Variable Documentation

const AllocFnsTy AllocationFnData[]
static
Initial value:
= {
{LibFunc::malloc, MallocLike, 1, 0, -1},
{LibFunc::valloc, MallocLike, 1, 0, -1},
{LibFunc::Znwj, OpNewLike, 1, 0, -1},
{LibFunc::ZnwjRKSt9nothrow_t, MallocLike, 2, 0, -1},
{LibFunc::Znwm, OpNewLike, 1, 0, -1},
{LibFunc::ZnwmRKSt9nothrow_t, MallocLike, 2, 0, -1},
{LibFunc::Znaj, OpNewLike, 1, 0, -1},
{LibFunc::ZnajRKSt9nothrow_t, MallocLike, 2, 0, -1},
{LibFunc::Znam, OpNewLike, 1, 0, -1},
{LibFunc::ZnamRKSt9nothrow_t, MallocLike, 2, 0, -1},
{LibFunc::calloc, CallocLike, 2, 0, 1},
{LibFunc::realloc, ReallocLike, 2, 1, -1},
{LibFunc::reallocf, ReallocLike, 2, 1, -1},
{LibFunc::strdup, StrDupLike, 1, -1, -1},
{LibFunc::strndup, StrDupLike, 2, 1, -1}
}

Definition at line 54 of file MemoryBuiltins.cpp.

Referenced by getAllocationData().