summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/MCJIT
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-04-24 22:18:18 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-04-24 22:18:18 +0000
commitfdb497a9b2967a1cffe476abb9200ed1ed8cd85c (patch)
tree9e44fbb678df8531800ba2bd98db1a46b7db1160 /llvm/lib/ExecutionEngine/MCJIT
parentcd5b02701cc26cff3e0959f9f77b9d616c878734 (diff)
downloadbcm5719-llvm-fdb497a9b2967a1cffe476abb9200ed1ed8cd85c.tar.gz
bcm5719-llvm-fdb497a9b2967a1cffe476abb9200ed1ed8cd85c.zip
[objc-arc] Added ImpreciseAutoreleaseSet to track autorelease calls that were once autoreleaseRV instructions.
Due to the semantics of ARC, we must be extremely conservative with autorelease calls inserted by the frontend since ARC gaurantees that said object will be in the autorelease pool after that point, an optimization invariant that the optimizer must respect. On the other hand, we are allowed significantly more flexibility with autoreleaseRV instructions. Often times though this flexibility is disrupted by early transformations which transform objc_autoreleaseRV => objc_autorelease if said instruction is no longer being used as part of an RV pair (generally due to inlining). Since we can not tell the difference in between an autorelease put into place by the frontend and one created through said ``strength reduction'' we can not perform these optimizations. The addition of this set gets around said issues by allowing us to differentiate in between said two cases. rdar://problem/13697741. llvm-svn: 180222
Diffstat (limited to 'llvm/lib/ExecutionEngine/MCJIT')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud