<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/ObjCARC, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/ObjCARC?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/ObjCARC?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-03-29T22:44:59Z</updated>
<entry>
<title>Updated test0 of retain-not-declared.ll to reflect the fact that objc-arc-expand runs before objc-arc/objc-arc-contract.</title>
<updated>2013-03-29T22:44:59Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-29T22:44:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2030d5f3e9bdde75c9585f1df5994dd4d63ce5f1'/>
<id>urn:sha1:2030d5f3e9bdde75c9585f1df5994dd4d63ce5f1</id>
<content type='text'>
Specifically, objc-arc-expand will make sure that the
objc_retainAutoreleasedReturnValue, objc_autoreleaseReturnValue, and ret
will all have %call as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178382 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add clang.arc.used to ModuleHasARC so ARC always runs if said call is present in a module.</title>
<updated>2013-03-29T21:15:23Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-29T21:15:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3e9f3a0389488701bd1cb5c778d0e785c827d790'/>
<id>urn:sha1:3e9f3a0389488701bd1cb5c778d0e785c827d790</id>
<content type='text'>
clang.arc.used is an interesting call for ARC since ObjCARCContract
needs to run to remove said intrinsic to avoid a linker error (since the
call does not exist).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178369 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Non optimizable objc_retainBlock calls are not forwarding.</title>
<updated>2013-03-28T20:11:30Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-28T20:11:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3832eff354eea32f92acf3f5176c6213cb65848b'/>
<id>urn:sha1:3832eff354eea32f92acf3f5176c6213cb65848b</id>
<content type='text'>
Since we handle optimizable objc_retainBlocks through strength reduction
in OptimizableIndividualCalls, we know that all code after that point
will only see non-optimizable objc_retainBlock calls. IsForwarding is
only called by functions after that point, so it is ok to just classify
objc_retainBlock as non-forwarding.

&lt;rdar://problem/13249661&gt;.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178285 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[ObjCARC] Strength reduce objc_retainBlock -&gt; objc_retain if the objc_retainBlock is optimizable.</title>
<updated>2013-03-28T20:11:19Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-28T20:11:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=0d92a3c600b453f3aa4f50ba0189ccb1dbbc1580'/>
<id>urn:sha1:0d92a3c600b453f3aa4f50ba0189ccb1dbbc1580</id>
<content type='text'>
If an objc_retainBlock has the copy_on_escape metadata attached to it
AND if the block pointer argument only escapes down the stack, we are
allowed to strength reduce the objc_retainBlock to to an objc_retain and
thus optimize it.

Current there is logic in the ARC data flow analysis to handle
this case which is complicated and involved making distinctions in
between objc_retainBlock and objc_retain in certain places and
considering them the same in others.

This patch simplifies said code by:

1. Performing the strength reduction in the initial ARC peephole
analysis (ObjCARCOpts::OptimizeIndividualCalls).

2. Changes the ARC dataflow analysis (which runs after the peephole
analysis) to consider all objc_retainBlock calls to not be optimizable
(since if the call was optimizable, we would have strength reduced it
already).

This patch leaves in the infrastructure in the ARC dataflow analysis to
handle this case, which due to 2 will just be dead code. I am doing this
on purpose to separate the removal of the old code from the testing of
the new code.

&lt;rdar://problem/13249661&gt;.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178284 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Added back in the test for arc-annotations.</title>
<updated>2013-03-27T00:09:58Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-27T00:09:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d841d6f71e4e95087a2eb509cedb50f7b5bfe142'/>
<id>urn:sha1:d841d6f71e4e95087a2eb509cedb50f7b5bfe142</id>
<content type='text'>
The test was removed since I had not turned off the test during release
builds. This fails since ARC annotations support  is conditionally
compiled out during release builds. I added the proper requires header
to assuage this issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178101 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Remove testcase. It's failing on some platforms but not others.</title>
<updated>2013-03-26T01:10:03Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-26T01:10:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=bd3148b2857139e8737945f5df1a1ea1f4aff3b9'/>
<id>urn:sha1:bd3148b2857139e8737945f5df1a1ea1f4aff3b9</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177956 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Hmm...not failing...odd</title>
<updated>2013-03-26T01:08:02Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-26T01:08:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=15827a83556fc37d148033e3fb6163de21896063'/>
<id>urn:sha1:15827a83556fc37d148033e3fb6163de21896063</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177955 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Temporarily XFAIL this test until Michael can look at it.</title>
<updated>2013-03-26T00:46:31Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-26T00:46:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7c6f5a5c84516435dfb1a76c314822607a8bfa5a'/>
<id>urn:sha1:7c6f5a5c84516435dfb1a76c314822607a8bfa5a</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177953 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[ObjCARC Annotations] Added support for displaying the state of pointers at the bottom/top of BBs of the ARC dataflow analysis for both bottomup and topdown analyses.</title>
<updated>2013-03-26T00:42:09Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-03-26T00:42:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=26dbfb6a7882bc8f5d9364b4bec7ef1d339dd327'/>
<id>urn:sha1:26dbfb6a7882bc8f5d9364b4bec7ef1d339dd327</id>
<content type='text'>
This will allow for verification and analysis of the merge function of
the data flow analyses in the ARC optimizer.

The actual implementation of this feature is by introducing calls to
the functions llvm.arc.annotation.{bottomup,topdown}.{bbstart,bbend}
which are only declared. Each such call takes in a pointer to a global
with the same name as the pointer whose provenance is being tracked and
a pointer whose name is one of our Sequence states and points to a
string that contains the same name.

To ensure that the optimizer does not consider these annotations in any
way, I made it so that the annotations are considered to be of IC_None
type.

A test case is included for this commit and the previous
ObjCARCAnnotation commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177952 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add an optimizer-side test case for ARC bug &lt;rdar://13195034&gt;, fixed</title>
<updated>2013-03-25T22:09:52Z</updated>
<author>
<name>John McCall</name>
<email>rjmccall@apple.com</email>
</author>
<published>2013-03-25T22:09:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3800f5748ffdb55d8838eac9300d84276c3dd2c1'/>
<id>urn:sha1:3800f5748ffdb55d8838eac9300d84276c3dd2c1</id>
<content type='text'>
in the frontend with @clang.arc.use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177928 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
