|
LLVM
3.7.0
|
#include "llvm/Transforms/Scalar.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/AssumptionCache.h"#include "llvm/Analysis/MemoryDependenceAnalysis.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/GetElementPtrTypeIterator.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/raw_ostream.h"#include "llvm/Transforms/Utils/Local.h"#include <list>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 &DL) |
| static bool | IsPointerOffset (Value *Ptr1, Value *Ptr2, int64_t &Offset, const DataLayout &DL) |
| IsPointerOffset - Return true if Ptr1 is provably equal to Ptr2 plus a constant offset, and return that constant offset. More... | |
| INITIALIZE_PASS_BEGIN (MemCpyOpt,"memcpyopt","MemCpy Optimization", false, false) INITIALIZE_PASS_END(MemCpyOpt | |
Variables | |
| memcpyopt | |
| MemCpy | Optimization |
| MemCpy | false |
| #define DEBUG_TYPE "memcpyopt" |
Definition at line 36 of file MemCpyOptimizer.cpp.
|
static |
Definition at line 43 of file MemCpyOptimizer.cpp.
References llvm::dyn_cast(), llvm::gep_type_begin(), llvm::StructLayout::getElementOffset(), llvm::generic_gep_type_iterator< ItTy >::getIndexedType(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::ConstantInt::getSExtValue(), llvm::DataLayout::getStructLayout(), llvm::DataLayout::getTypeAllocSize(), llvm::ConstantInt::getZExtValue(), and llvm::ConstantInt::isZero().
Referenced by IsPointerOffset().
| INITIALIZE_PASS_BEGIN | ( | MemCpyOpt | , |
| "memcpyopt" | , | ||
| "MemCpy Optimization" | , | ||
| false | , | ||
| false | |||
| ) |
|
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 77 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" | |||
| ) |
| MemCpy false |
Definition at line 370 of file MemCpyOptimizer.cpp.
| memcpyopt |
Definition at line 370 of file MemCpyOptimizer.cpp.
| MemCpy Optimization |
Definition at line 370 of file MemCpyOptimizer.cpp.
1.8.6