aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/Utils.cpp
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2019-01-04 18:33:06 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2019-01-04 18:33:06 +0000
commit1e36882b5291d5a7209be4f9c99b9713828afac4 (patch)
treecd23171fec5d69fd0390b0ad9303f51396072b5c /llvm/lib/Transforms/Utils/Utils.cpp
parent6153565511338f33506f4615dd5a7d2e4c4ffaa6 (diff)
downloadllvm-1e36882b5291d5a7209be4f9c99b9713828afac4.zip
llvm-1e36882b5291d5a7209be4f9c99b9713828afac4.tar.gz
llvm-1e36882b5291d5a7209be4f9c99b9713828afac4.tar.bz2
[ObjCARC] Add an new attribute, objc_externally_retained
This attribute, called "objc_externally_retained", exposes clang's notion of pseudo-__strong variables in ARC. Pseudo-strong variables "borrow" their initializer, meaning that they don't retain/release it, instead assuming that someone else is keeping their value alive. If a function is annotated with this attribute, implicitly strong parameters of that function aren't implicitly retained/released in the function body, and are implicitly const. This is useful to expose for performance reasons, most functions don't need the extra safety of the retain/release, so programmers can opt out as needed. This attribute can also apply to declarations of local variables, with similar effect. Differential revision: https://reviews.llvm.org/D55865 llvm-svn: 350422
Diffstat (limited to 'llvm/lib/Transforms/Utils/Utils.cpp')
0 files changed, 0 insertions, 0 deletions