summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2011-09-14 18:13:00 +0000
committerDan Gohman <gohman@apple.com>2011-09-14 18:13:00 +0000
commitd4b5e3a4d979144f82f0b1921a56b4dee840b897 (patch)
tree352f507effb769a9e1620858e7b766df35f2c7f8 /llvm/lib
parent3ac26b138b052973968543ae58de7ea89c523481 (diff)
downloadbcm5719-llvm-d4b5e3a4d979144f82f0b1921a56b4dee840b897.tar.gz
bcm5719-llvm-d4b5e3a4d979144f82f0b1921a56b4dee840b897.zip
objc_retainBlock is not NoModRef because it can update forwarding pointers
in memory relevant to the optimizer. rdar://10050579. llvm-svn: 139708
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Scalar/ObjCARC.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/ObjCARC.cpp b/llvm/lib/Transforms/Scalar/ObjCARC.cpp
index d753cf193fb..f978f571c6c 100644
--- a/llvm/lib/Transforms/Scalar/ObjCARC.cpp
+++ b/llvm/lib/Transforms/Scalar/ObjCARC.cpp
@@ -746,7 +746,6 @@ ObjCARCAliasAnalysis::getModRefInfo(ImmutableCallSite CS, const Location &Loc) {
switch (GetBasicInstructionClass(CS.getInstruction())) {
case IC_Retain:
case IC_RetainRV:
- case IC_RetainBlock:
case IC_Autorelease:
case IC_AutoreleaseRV:
case IC_NoopCast:
@@ -754,6 +753,8 @@ ObjCARCAliasAnalysis::getModRefInfo(ImmutableCallSite CS, const Location &Loc) {
case IC_FusedRetainAutorelease:
case IC_FusedRetainAutoreleaseRV:
// These functions don't access any memory visible to the compiler.
+ // Note that this doesn't include objc_retainBlock, becuase it updates
+ // pointers when it copies block data.
return NoModRef;
default:
break;
OpenPOWER on IntegriCloud