26 using namespace llvm::objcarc;
32 return OS <<
"IC_Retain";
34 return OS <<
"IC_RetainRV";
36 return OS <<
"IC_RetainBlock";
38 return OS <<
"IC_Release";
40 return OS <<
"IC_Autorelease";
42 return OS <<
"IC_AutoreleaseRV";
44 return OS <<
"IC_AutoreleasepoolPush";
46 return OS <<
"IC_AutoreleasepoolPop";
48 return OS <<
"IC_NoopCast";
50 return OS <<
"IC_FusedRetainAutorelease";
52 return OS <<
"IC_FusedRetainAutoreleaseRV";
54 return OS <<
"IC_LoadWeakRetained";
56 return OS <<
"IC_StoreWeak";
58 return OS <<
"IC_InitWeak";
60 return OS <<
"IC_LoadWeak";
62 return OS <<
"IC_MoveWeak";
64 return OS <<
"IC_CopyWeak";
66 return OS <<
"IC_DestroyWeak";
68 return OS <<
"IC_StoreStrong";
70 return OS <<
"IC_CallOrUser";
72 return OS <<
"IC_Call";
74 return OS <<
"IC_User";
76 return OS <<
"IC_IntrinsicUser";
78 return OS <<
"IC_None";
98 Type *ETy = PTy->getElementType();
121 if (Pte->getElementType()->isIntegerTy(8))
133 if (
PointerType *Pte = dyn_cast<PointerType>(PTy->getElementType()))
134 if (Pte->getElementType()->isIntegerTy(8))
136 Type *ETy1 = PTy1->getElementType();
145 if (
PointerType *Pte1 = dyn_cast<PointerType>(ETy1))
146 if (Pte1->getElementType()->isIntegerTy(8))
154 .
Case(
"llvm.arc.annotation.topdown.bbstart",
IC_None)
155 .
Case(
"llvm.arc.annotation.topdown.bbend",
IC_None)
156 .
Case(
"llvm.arc.annotation.bottomup.bbstart",
IC_None)
157 .
Case(
"llvm.arc.annotation.bottomup.bbend",
IC_None)
175 switch (
I->getOpcode()) {
186 switch (
F->getIntrinsicID()) {
208 case Instruction::Invoke:
210 case Instruction::BitCast:
211 case Instruction::GetElementPtr:
214 case Instruction::Switch:
case Instruction::IndirectBr:
215 case Instruction::Alloca:
case Instruction::VAArg:
216 case Instruction::Add:
case Instruction::FAdd:
217 case Instruction::Sub:
case Instruction::FSub:
218 case Instruction::Mul:
case Instruction::FMul:
219 case Instruction::SDiv:
case Instruction::UDiv:
case Instruction::FDiv:
220 case Instruction::SRem:
case Instruction::URem:
case Instruction::FRem:
221 case Instruction::Shl:
case Instruction::LShr:
case Instruction::AShr:
223 case Instruction::SExt:
case Instruction::ZExt:
case Instruction::Trunc:
224 case Instruction::IntToPtr:
case Instruction::FCmp:
225 case Instruction::FPTrunc:
case Instruction::FPExt:
226 case Instruction::FPToUI:
case Instruction::FPToSI:
227 case Instruction::UIToFP:
case Instruction::SIToFP:
229 case Instruction::ShuffleVector:
230 case Instruction::ExtractValue:
232 case Instruction::ICmp:
LLVM Argument representation.
objc_retainedObject, etc.
objc_storeWeak (primitive)
raw_ostream & operator<<(raw_ostream &OS, const InstructionClass Class)
StringSwitch & Case(const char(&S)[N], const T &Value)
StringRef getName() const
#define llvm_unreachable(msg)
InstructionClass GetInstructionClass(const Value *V)
Determine what kind of construct V is.
InstructionClass GetFunctionClass(const Function *F)
Determine if F is one of the special known Functions. If it isn't, return IC_CallOrUser.
static ConstantInt * ExtractElement(Constant *V, Constant *Idx)
A switch()-like statement whose cases are string literals.
objc_destroyWeak (derived)
APInt Or(const APInt &LHS, const APInt &RHS)
Bitwise OR function for APInt.
APInt Xor(const APInt &LHS, const APInt &RHS)
Bitwise XOR function for APInt.
InstructionClass
A simple classification for instructions.
static InstructionClass GetCallSiteClass(ImmutableCallSite CS)
Helper for GetInstructionClass. Determines what kind of construct CS is.
could call objc_release and/or "use" pointers
Function * getCalledFunction() const
R Default(const T &Value) const
static bool IsPotentialRetainableObjPtr(const Value *Op)
Test whether the given value is possible a retainable object pointer.
objc_autoreleaseReturnValue
APInt And(const APInt &LHS, const APInt &RHS)
Bitwise AND function for APInt.
objc_retainAutoreleasedReturnValue
objc_retainAutoreleaseReturnValue
LLVM Value Representation.
objc_loadWeakRetained (primitive)
objc_storeStrong (derived)