summaryrefslogtreecommitdiff
path: root/lib/Transforms/ObjCARC
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-03-28 20:11:30 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-03-28 20:11:30 +0000
commit3832eff354eea32f92acf3f5176c6213cb65848b (patch)
treeaf7db708f8621603db5611a92d0026ec0f747870 /lib/Transforms/ObjCARC
parent0d92a3c600b453f3aa4f50ba0189ccb1dbbc1580 (diff)
downloadllvm-3832eff354eea32f92acf3f5176c6213cb65848b.tar.gz
llvm-3832eff354eea32f92acf3f5176c6213cb65848b.tar.bz2
llvm-3832eff354eea32f92acf3f5176c6213cb65848b.tar.xz
Non optimizable objc_retainBlock calls are not forwarding.
Since we handle optimizable objc_retainBlocks through strength reduction in OptimizableIndividualCalls, we know that all code after that point will only see non-optimizable objc_retainBlock calls. IsForwarding is only called by functions after that point, so it is ok to just classify objc_retainBlock as non-forwarding. <rdar://problem/13249661>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178285 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/ObjCARC')
-rw-r--r--lib/Transforms/ObjCARC/ObjCARC.h3
1 files changed, 0 insertions, 3 deletions
diff --git a/lib/Transforms/ObjCARC/ObjCARC.h b/lib/Transforms/ObjCARC/ObjCARC.h
index ba98e0a9c8..614fa29e3e 100644
--- a/lib/Transforms/ObjCARC/ObjCARC.h
+++ b/lib/Transforms/ObjCARC/ObjCARC.h
@@ -120,13 +120,10 @@ static inline bool IsAutorelease(InstructionClass Class) {
/// \brief Test if the given class represents instructions which return their
/// argument verbatim.
static inline bool IsForwarding(InstructionClass Class) {
- // objc_retainBlock technically doesn't always return its argument
- // verbatim, but it doesn't matter for our purposes here.
return Class == IC_Retain ||
Class == IC_RetainRV ||
Class == IC_Autorelease ||
Class == IC_AutoreleaseRV ||
- Class == IC_RetainBlock ||
Class == IC_NoopCast;
}