Go to file
Michael Gottesman 1d8d25777d Properly model precise lifetime when given an incomplete dataflow sequence.
The normal dataflow sequence in the ARC optimizer consists of the following
states:

    Retain -> CanRelease -> Use -> Release

The optimizer before this patch stored the uses that determine the lifetime of
the retainable object pointer when it bottom up hits a retain or when top down
it hits a release. This is correct for an imprecise lifetime scenario since what
we are trying to do is remove retains/releases while making sure that no
``CanRelease'' (which is usually a call) deallocates the given pointer before we
get to the ``Use'' (since that would cause a segfault).

If we are considering the precise lifetime scenario though, this is not
correct. In such a situation, we *DO* care about the previous sequence, but
additionally, we wish to track the uses resulting from the following incomplete
sequences:

  Retain -> CanRelease -> Release   (TopDown)
  Retain <- Use <- Release          (BottomUp)

*NOTE* This patch looks large but the most of it consists of updating
test cases. Additionally this fix exposed an additional bug. I removed
the test case that expressed said bug and will recommit it with the fix
in a little bit.

llvm-svn: 178921
2013-04-05 22:54:28 +00:00
clang [libclang] Fix cursor visitation to not ignore template arguments in out-of-line member functions. 2013-04-05 21:04:10 +00:00
clang-tools-extra Fix UseNullptr fails to replace explict casts surrounded by another implicit 2013-04-05 20:32:36 +00:00
compiler-rt [asan] make huge_negative_hea_oob more meaningful 2013-04-05 15:16:48 +00:00
debuginfo-tests Remove IR scenario tests. 2013-03-15 20:52:10 +00:00
libclc Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
libcxx Fix bug in __libcpp_db::__iterator_copy. Add debug test for swaping lists. 2013-04-05 17:58:52 +00:00
libcxxabi Bruce Mitchener: Typo fixes. 2013-02-15 15:48:49 +00:00
lld Revert "Correctly pass ownership of MemoryBuffers." 2013-04-05 22:04:44 +00:00
lldb Reorder the Platform plugin settings so that they're now 2013-04-05 22:40:42 +00:00
llvm Properly model precise lifetime when given an incomplete dataflow sequence. 2013-04-05 22:54:28 +00:00
polly ScopDetection: Use isTopLevelRegion 2013-04-02 06:41:48 +00:00