1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/lib/Transforms
Michael Gottesman 0c2ffd01ef [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
2013-04-24 22:18:18 +00:00
..
Hello
InstCombine Move C++ code out of the C headers and into either C++ headers 2013-04-22 22:47:22 +00:00
Instrumentation Move C++ code out of the C headers and into either C++ headers 2013-04-22 22:47:22 +00:00
IPO Move C++ code out of the C headers and into either C++ headers 2013-04-22 22:47:22 +00:00
ObjCARC [objc-arc] Added ImpreciseAutoreleaseSet to track autorelease calls that were once autoreleaseRV instructions. 2013-04-24 22:18:18 +00:00
Scalar Move C++ code out of the C headers and into either C++ headers 2013-04-22 22:47:22 +00:00
Utils Make sure the instruction right after an inlined function has a 2013-04-23 19:56:03 +00:00
Vectorize LoopVectorizer: Change variable name Stride to ConsecutiveStride 2013-04-24 16:16:03 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile