LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Functions | Variables
MemCpyOptimizer.cpp File Reference
#include "llvm/Transforms/Scalar.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/Dominators.h"
#include "llvm/Analysis/MemoryDependenceAnalysis.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetLibraryInfo.h"
#include "llvm/Transforms/Utils/Local.h"
#include <list>
Include dependency graph for MemCpyOptimizer.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "memcpyopt"
 

Functions

 STATISTIC (NumMemCpyInstr,"Number of memcpy instructions deleted")
 
 STATISTIC (NumMemSetInfer,"Number of memsets inferred")
 
 STATISTIC (NumMoveToCpy,"Number of memmoves converted to memcpy")
 
 STATISTIC (NumCpyToSet,"Number of memcpys converted to memset")
 
static int64_t GetOffsetFromIndex (const GEPOperator *GEP, unsigned Idx, bool &VariableIdxFound, const DataLayout &TD)
 
static bool IsPointerOffset (Value *Ptr1, Value *Ptr2, int64_t &Offset, const DataLayout &TD)
 
 INITIALIZE_PASS_BEGIN (MemCpyOpt,"memcpyopt","MemCpy Optimization", false, false) INITIALIZE_PASS_END(MemCpyOpt
 

Variables

 memcpyopt
 
MemCpy Optimization
 
MemCpy false
 

Macro Definition Documentation

#define DEBUG_TYPE   "memcpyopt"

Definition at line 15 of file MemCpyOptimizer.cpp.

Function Documentation

static int64_t GetOffsetFromIndex ( const GEPOperator GEP,
unsigned  Idx,
bool VariableIdxFound,
const DataLayout TD 
)
static
INITIALIZE_PASS_BEGIN ( MemCpyOpt  ,
"memcpyopt"  ,
"MemCpy Optimization ,
false  ,
false   
)
static bool IsPointerOffset ( Value Ptr1,
Value Ptr2,
int64_t &  Offset,
const DataLayout TD 
)
static

IsPointerOffset - Return true if Ptr1 is provably equal to Ptr2 plus a constant offset, and return that constant offset. For example, Ptr1 might be &A[42], and Ptr2 might be &A[40]. In this case offset would be -8.

Definition at line 74 of file MemCpyOptimizer.cpp.

References llvm::dyn_cast(), llvm::User::getNumOperands(), GetOffsetFromIndex(), llvm::User::getOperand(), and llvm::Value::stripPointerCasts().

STATISTIC ( NumMemCpyInstr  ,
"Number of memcpy instructions deleted"   
)
STATISTIC ( NumMemSetInfer  ,
"Number of memsets inferred"   
)
STATISTIC ( NumMoveToCpy  ,
"Number of memmoves converted to memcpy"   
)
STATISTIC ( NumCpyToSet  ,
"Number of memcpys converted to memset"   
)

Variable Documentation

MemCpy false

Definition at line 360 of file MemCpyOptimizer.cpp.

memcpyopt

Definition at line 360 of file MemCpyOptimizer.cpp.

MemCpy Optimization

Definition at line 360 of file MemCpyOptimizer.cpp.