<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/lib/Transforms/ObjCARC, branch master</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/lib/Transforms/ObjCARC?h=master</id>
<link rel='self' href='https://git.amat.us/llvm/atom/lib/Transforms/ObjCARC?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-05-14T00:08:09Z</updated>
<entry>
<title>[objc-arc-opts] Added debug statements when we set and unset whether a pointer is known positive.</title>
<updated>2013-05-14T00:08:09Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-05-14T00:08:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=dba53a8c9d4ece0bf44acbf5fce871f2e754d97d'/>
<id>urn:sha1:dba53a8c9d4ece0bf44acbf5fce871f2e754d97d</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181745 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[objc-arc-opts] In the presense of an alloca unconditionally remove RR pairs if and only if we are both KnownSafeBU/KnownSafeTD rather than just either or.</title>
<updated>2013-05-13T23:49:42Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-05-13T23:49:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=acfb3584c58159ec20a8379c864c9d644f8d967e'/>
<id>urn:sha1:acfb3584c58159ec20a8379c864c9d644f8d967e</id>
<content type='text'>
In the presense of a block being initialized, the frontend will emit the
objc_retain on the original pointer and the release on the pointer loaded from
the alloca. The optimizer will through the provenance analysis realize that the
two are related (albiet different), but since we only require KnownSafe in one
direction, will match the inner retain on the original pointer with the guard
release on the original pointer. This is fixed by ensuring that in the presense
of allocas we only unconditionally remove pointers if both our retain and our
release are KnownSafe (i.e. we are KnownSafe in both directions) since we must
deal with the possibility that the frontend will emit what (to the optimizer)
appears to be unbalanced retain/releases.

An example of the miscompile is:

  %A = alloca
  retain(%x)
  retain(%x) &lt;--- Inner Retain
  store %x, %A
  %y = load %A
  ... DO STUFF ...
  release(%y)
  call void @use(%x)
  release(%x) &lt;--- Guarding Release

getting optimized to:

  %A = alloca
  retain(%x)
  store %x, %A
  %y = load %A
  ... DO STUFF ...
  release(%y)
  call void @use(%x)

rdar://13750319

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181743 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Move a couple more statistics inside '#ifndef NDEBUG'.</title>
<updated>2013-05-13T21:10:49Z</updated>
<author>
<name>Matt Beaumont-Gay</name>
<email>matthewbg@google.com</email>
</author>
<published>2013-05-13T21:10:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=9b5e6c0943dcfced64980240e25427cdc06c9bad'/>
<id>urn:sha1:9b5e6c0943dcfced64980240e25427cdc06c9bad</id>
<content type='text'>
Suppresses an unused-variable warning in -Asserts builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181733 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[objc-arc-opts] Add comment to BBState making it clear that get{TopDown,BottomUp}PtrState will create a new PtrState object if it does not find a PtrState for Arg.</title>
<updated>2013-05-13T19:40:39Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-05-13T19:40:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=774a8cf2f5a5f8cd580c71f5eb3055a293917102'/>
<id>urn:sha1:774a8cf2f5a5f8cd580c71f5eb3055a293917102</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181726 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[objc-arc] Move the before optimization statistics gathering phase out of OptimizeIndividualCalls.</title>
<updated>2013-05-13T18:29:07Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-05-13T18:29:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=fa709768b91df14bb7b5606700d92c3c10aba625'/>
<id>urn:sha1:fa709768b91df14bb7b5606700d92c3c10aba625</id>
<content type='text'>
This makes the statistics gathering completely independent of the actual
optimization occuring, preventing any sort of bleeding over from occuring.

Additionally, it simplifies a switch statement in the non-statistic gathering case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181719 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add ArrayRef constructor from None, and do the cleanups that this constructor enables</title>
<updated>2013-05-05T00:40:33Z</updated>
<author>
<name>Dmitri Gribenko</name>
<email>gribozavr@gmail.com</email>
</author>
<published>2013-05-05T00:40:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=5c332dbd30d9398ed25b30c3080506f7b8e92290'/>
<id>urn:sha1:5c332dbd30d9398ed25b30c3080506f7b8e92290</id>
<content type='text'>
Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181138 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>This patch breaks up Wrap.h so that it does not have to include all of </title>
<updated>2013-05-01T20:59:00Z</updated>
<author>
<name>Filip Pizlo</name>
<email>fpizlo@apple.com</email>
</author>
<published>2013-05-01T20:59:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=40be1e85665d10f5444186f0e7106e368dd735b8'/>
<id>urn:sha1:40be1e85665d10f5444186f0e7106e368dd735b8</id>
<content type='text'>
the things, and renames it to CBindingWrapping.h.  I also moved 
CBindingWrapping.h into Support/.

This new file just contains the macros for defining different wrap/unwrap 
methods.

The calls to those macros, as well as any custom wrap/unwrap definitions 
(like for array of Values for example), are put into corresponding C++ 
headers.

Doing this required some #include surgery, since some .cpp files relied 
on the fact that including Wrap.h implicitly caused the inclusion of a 
bunch of other things.

This also now means that the C++ headers will include their corresponding 
C API headers; for example Value.h must include llvm-c/Core.h.  I think 
this is harmless, since the C API headers contain just external function 
declarations and some C types, so I don't believe there should be any 
nasty dependency issues here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180881 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add in some conditional compilation in order to silence an unused variable warning.</title>
<updated>2013-04-29T07:29:08Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-04-29T07:29:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f4fc9b175306a49c3d3c72f1e9e08f8ea2038c51'/>
<id>urn:sha1:f4fc9b175306a49c3d3c72f1e9e08f8ea2038c51</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180700 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[objc-arc] Apply the RV optimization to retains next to calls in ObjCARCContract instead of ObjCARCOpts.</title>
<updated>2013-04-29T06:53:53Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-04-29T06:53:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f11a6856cc28875133cef0f7bbad2b7de3a83776'/>
<id>urn:sha1:f11a6856cc28875133cef0f7bbad2b7de3a83776</id>
<content type='text'>
Turning retains into retainRV calls disrupts the data flow analysis in
ObjCARCOpts. Thus we move it as late as we can by moving it into
ObjCARCContract.

We leave in the conversion from retainRV -&gt; retain in ObjCARCOpt since
it enables the dataflow analysis.

rdar://10813093

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180698 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Added statistics to count the number of retains/releases before/after optimization.</title>
<updated>2013-04-29T06:16:57Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-04-29T06:16:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=fe7ea985fac4abb4056fa5f020449a2802a81604'/>
<id>urn:sha1:fe7ea985fac4abb4056fa5f020449a2802a81604</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180697 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
