diff options
author | Dan Gohman <gohman@apple.com> | 2011-09-14 18:13:00 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2011-09-14 18:13:00 +0000 |
commit | d4b5e3a4d979144f82f0b1921a56b4dee840b897 (patch) | |
tree | 352f507effb769a9e1620858e7b766df35f2c7f8 /llvm/lib/Transforms/Scalar/ObjCARC.cpp | |
parent | 3ac26b138b052973968543ae58de7ea89c523481 (diff) | |
download | bcm5719-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/Transforms/Scalar/ObjCARC.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/ObjCARC.cpp | 3 |
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; |