llvm-6502/lib/Transforms/ObjCARC
Michael Gottesman 3f4613310d [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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180222 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-24 22:18:18 +00:00
..
CMakeLists.txt Extracted ObjCARCContract from ObjCARCOpts into its own file. 2013-01-29 03:03:03 +00:00
DependencyAnalysis.cpp Kill every call to @clang.arc.use in the ARC contract phase. 2013-03-22 21:38:36 +00:00
DependencyAnalysis.h Extracted ObjCARCContract from ObjCARCOpts into its own file. 2013-01-29 03:03:03 +00:00
LLVMBuild.txt Added missing dashes from header declaration comment. 2013-01-29 04:53:55 +00:00
Makefile
ObjCARC.cpp Move C++ code out of the C headers and into either C++ headers 2013-04-22 22:47:22 +00:00
ObjCARC.h Add clang.arc.used to ModuleHasARC so ARC always runs if said call is present in a module. 2013-03-29 21:15:23 +00:00
ObjCARCAliasAnalysis.cpp Sorted includes using utils/sort_includes. 2013-01-29 04:20:52 +00:00
ObjCARCAliasAnalysis.h Added two missing headers from ObjCARCAliasAnalysis.h. 2013-01-29 04:09:24 +00:00
ObjCARCAPElim.cpp Hopefully fix the Windows build failure introduced in r173769 2013-01-29 09:09:27 +00:00
ObjCARCContract.cpp Changed isNullOrUndef => IsNullOrUndef and isNoopInstruction => IsNoopInstruction so that all helper functions are named similarly in ObjCARC.h. 2013-03-25 09:27:43 +00:00
ObjCARCExpand.cpp Sorted includes using utils/sort_includes. 2013-01-29 04:20:52 +00:00
ObjCARCOpts.cpp [objc-arc] Added ImpreciseAutoreleaseSet to track autorelease calls that were once autoreleaseRV instructions. 2013-04-24 22:18:18 +00:00
ObjCARCUtil.cpp [ObjCARC Annotations] Added support for displaying the state of pointers at the bottom/top of BBs of the ARC dataflow analysis for both bottomup and topdown analyses. 2013-03-26 00:42:09 +00:00
ProvenanceAnalysis.cpp Changed isStoredObjCPointer => IsStoredObjCPointer. No functionality change. 2013-02-12 23:35:08 +00:00
ProvenanceAnalysis.h Fixed some whitespace/80+ violations. Also added a space after a namespace declaration. 2013-01-29 04:58:30 +00:00