1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 06:22:56 +02:00
llvm-mirror/lib/Transforms/ObjCARC
Michael Gottesman 86672937bd [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC.
The RCIdentity root ("Reference Count Identity Root") of a value V is a
dominating value U for which retaining or releasing U is equivalent to
retaining or releasing V. In other words, ARC operations on V are
equivalent to ARC operations on U.

This is a useful property to ascertain since we can use this in the ARC
optimizer to make it easier to match up ARC operations by always mapping
ARC operations to RCIdentityRoots instead of pointers themselves. Then
we perform pairing of retains, releases which are applied to the same
RCIdentityRoot.

In general, the two ways that we see RCIdentical values in ObjC are via:

  1. PointerCasts
  2. Forwarding Calls that return their argument verbatim.

As such in ObjC, two RCIdentical pointers must always point to the same
memory location.

Previously this concept was implicit in the code and various methods
that dealt with this concept were given functional names that did not
conform to any name in the "ARC" model. This often times resulted in
code that was hard for the non-ARC acquanted to understand resulting in
unhappiness and confusion.

llvm-svn: 229796
2015-02-19 00:42:38 +00:00
..
ARCRuntimeEntryPoints.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
CMakeLists.txt Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
DependencyAnalysis.cpp [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
DependencyAnalysis.h Repace SmallPtrSet with SmallPtrSetImpl in function arguments to avoid needing to mention the size. 2014-08-21 05:55:13 +00:00
LLVMBuild.txt Added missing dashes from header declaration comment. 2013-01-29 04:53:55 +00:00
Makefile
ObjCARC.cpp Add back r222061 with a fix. 2014-11-17 02:28:27 +00:00
ObjCARC.h [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
ObjCARCAliasAnalysis.cpp [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
ObjCARCAliasAnalysis.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
ObjCARCAPElim.cpp Add comdat key field to llvm.global_ctors and llvm.global_dtors 2014-05-16 20:39:27 +00:00
ObjCARCContract.cpp [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
ObjCARCExpand.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
ObjCARCOpts.cpp [objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC. 2015-02-19 00:42:38 +00:00
ObjCARCUtil.cpp [objc-arc] Changed 'mode: c++' => 'C++' at Nick Lewycky's suggestion. Also removed unnecessary mode: c++ lines from .cpp files. 2013-07-10 18:49:00 +00:00
ProvenanceAnalysis.cpp Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool> 2014-11-19 07:49:26 +00:00
ProvenanceAnalysis.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
ProvenanceAnalysisEvaluator.cpp Add back r222061 with a fix. 2014-11-17 02:28:27 +00:00