1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 21:42:54 +02:00
llvm-mirror/lib/Transforms/ObjCARC
Pete Cooper 604ae0b712 Form objc_storeStrong in the presence of bitcasts.
objc_storeStrong can be formed from a sequence such as

  %0 = tail call i8* @objc_retain(i8* %p) nounwind
  %tmp = load i8*, i8** @x, align 8
  store i8* %0, i8** @x, align 8
  tail call void @objc_release(i8* %tmp) nounwind

The code was already looking through bitcasts for most of the values
involved, but had missed one case where the pointer operand for the
store was a bitcast.  Ultimately the pointer for the load and store
have to be the same value, after stripping casts.

llvm-svn: 270955
2016-05-27 02:13:53 +00:00
..
ARCRuntimeEntryPoints.h
BlotMapVector.h Unify XDEBUG and EXPENSIVE_CHECKS (into the latter), and add an option to the cmake build to enable them. 2016-04-29 15:22:48 +00:00
CMakeLists.txt
DependencyAnalysis.cpp ObjCARC: Remove implicit ilist iterator conversions, NFC 2015-10-19 23:20:14 +00:00
DependencyAnalysis.h Make more headers self-contained. 2016-01-27 18:03:37 +00:00
LLVMBuild.txt
ObjCARC.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ObjCARC.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ObjCARCAPElim.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
ObjCARCContract.cpp Form objc_storeStrong in the presence of bitcasts. 2016-05-27 02:13:53 +00:00
ObjCARCExpand.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ObjCARCOpts.cpp [ObjCARC] Handle ARCInstKind::ClaimRV in OptimizeIndividualCalls. 2016-02-17 18:51:27 +00:00
ProvenanceAnalysis.cpp
ProvenanceAnalysis.h
ProvenanceAnalysisEvaluator.cpp
PtrState.cpp ObjCARC: Remove implicit ilist iterator conversions, NFC 2015-10-19 23:20:14 +00:00
PtrState.h