|
LLVM
4.0.0
|
This file defines late ObjC ARC optimizations. More...
#include "ObjCARC.h"#include "ARCRuntimeEntryPoints.h"#include "DependencyAnalysis.h"#include "ProvenanceAnalysis.h"#include "llvm/ADT/Statistic.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/InlineAsm.h"#include "llvm/IR/Operator.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "objc-arc-contract" |
Functions | |
| STATISTIC (NumPeeps,"Number of calls peephole-optimized") | |
| STATISTIC (NumStoreStrongs,"Number objc_storeStrong calls formed") | |
| static StoreInst * | findSafeStoreForStoreStrongContraction (LoadInst *Load, Instruction *Release, ProvenanceAnalysis &PA, AliasAnalysis *AA) |
| static Instruction * | findRetainForStoreStrongContraction (Value *New, StoreInst *Store, Instruction *Release, ProvenanceAnalysis &PA) |
| INITIALIZE_PASS_BEGIN (ObjCARCContract,"objc-arc-contract","ObjC ARC contraction", false, false) INITIALIZE_PASS_END(ObjCARCContract | |
Variables | |
| objc arc | contract |
| objc arc ObjC ARC | contraction |
| objc arc ObjC ARC | false |
This file defines late ObjC ARC optimizations.
ARC stands for Automatic Reference Counting and is a system for managing reference counts for objects in Objective C.
This specific file mainly deals with ``contracting'' multiple lower level operations into singular higher level operations through pattern matching.
WARNING: This file knows about certain library functions. It recognizes them by name, and hardwires knowledge of their semantics.
WARNING: This file knows about how certain Objective-C library functions are used. Naive LLVM IR transformations which would otherwise be behavior-preserving may break these assumptions.
Definition in file ObjCARCContract.cpp.
Definition at line 43 of file ObjCARCContract.cpp.
|
static |
Definition at line 282 of file ObjCARCContract.cpp.
References llvm::BasicBlock::begin(), llvm::objcarc::CanDecrementRefCount(), llvm::objcarc::GetArgRCIdentityRoot(), llvm::objcarc::GetBasicARCInstKind(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), I, and llvm::objcarc::Retain.
|
static |
Definition at line 195 of file ObjCARCContract.cpp.
References llvm::objcarc::CanUse(), llvm::dyn_cast(), E, llvm::BasicBlock::end(), llvm::MemoryLocation::get(), llvm::objcarc::GetBasicARCInstKind(), llvm::AAResults::getModRefInfo(), llvm::Instruction::getParent(), llvm::StoreInst::getPointerOperand(), I, llvm::objcarc::IsRetain(), llvm::StoreInst::isSimple(), llvm::MRI_Mod, llvm::MemoryLocation::Ptr, llvm::SPII::Store, and llvm::Value::stripPointerCasts().
| INITIALIZE_PASS_BEGIN | ( | ObjCARCContract | , |
| "objc-arc-contract" | , | ||
| "ObjC ARC contraction" | , | ||
| false | , | ||
| false | |||
| ) |
| STATISTIC | ( | NumPeeps | , |
| "Number of calls peephole-optimized" | |||
| ) |
| STATISTIC | ( | NumStoreStrongs | , |
| "Number objc_storeStrong calls formed" | |||
| ) |
| objc arc contract |
Definition at line 662 of file ObjCARCContract.cpp.
| objc arc ObjC ARC contraction |
Definition at line 662 of file ObjCARCContract.cpp.
| objc arc ObjC ARC false |
Definition at line 662 of file ObjCARCContract.cpp.
1.8.6