forked from OSchip/llvm-project
6fdcb3c2ce
retainAutoreleasedReturnValue that retains the returned value. This commit fixes a bug in ARC optimizer where it moves a release between a call and a retainAutoreleasedReturnValue, causing the returned object to be released before the retainAutoreleasedReturnValue can retain it. This commit accomplishes that by doing a lookahead and checking whether the call prevents the release from moving upwards. In the long term, we should treat the region between the retainAutoreleasedReturnValue and the call as a critical section and disallow moving anything there (possibly using operand bundles). rdar://problem/20449878 llvm-svn: 301724 |
||
---|---|---|
.. | ||
ARCRuntimeEntryPoints.h | ||
BlotMapVector.h | ||
CMakeLists.txt | ||
DependencyAnalysis.cpp | ||
DependencyAnalysis.h | ||
LLVMBuild.txt | ||
ObjCARC.cpp | ||
ObjCARC.h | ||
ObjCARCAPElim.cpp | ||
ObjCARCContract.cpp | ||
ObjCARCExpand.cpp | ||
ObjCARCOpts.cpp | ||
ProvenanceAnalysis.cpp | ||
ProvenanceAnalysis.h | ||
ProvenanceAnalysisEvaluator.cpp | ||
PtrState.cpp | ||
PtrState.h |