<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Analysis/BasicAA, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Analysis/BasicAA?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Analysis/BasicAA?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-03-06T17:48:48Z</updated>
<entry>
<title>Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata.</title>
<updated>2013-03-06T17:48:48Z</updated>
<author>
<name>Shuxin Yang</name>
<email>shuxin.llvm@gmail.com</email>
</author>
<published>2013-03-06T17:48:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=985dac65791b9f6f631bdd51c18fe66592a67469'/>
<id>urn:sha1:985dac65791b9f6f631bdd51c18fe66592a67469</id>
<content type='text'>
The "invariant.load" metadata indicates the memory unit being accessed is immutable.
A load annotated with this metadata can be moved across any store.

As I am not sure if it is legal to move such loads across barrier/fence, this
change dose not allow such transformation.

rdar://11311484

Thank Arnold for code review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176562 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Use references to attribute groups on the call/invoke instructions.</title>
<updated>2013-02-22T09:09:42Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-02-22T09:09:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=351b7a10e2560a835759748c58da09e53207b39d'/>
<id>urn:sha1:351b7a10e2560a835759748c58da09e53207b39d</id>
<content type='text'>
Listing all of the attributes for the callee of a call/invoke instruction is way
too much and makes the IR unreadable. Use references to attributes instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175877 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Modify the LLVM assembly output so that it uses references to represent function attributes.</title>
<updated>2013-02-20T07:21:42Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-02-20T07:21:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7ab6c76ad1cbf36284ca5b6bd5ee33c625fe3e60'/>
<id>urn:sha1:7ab6c76ad1cbf36284ca5b6bd5ee33c625fe3e60</id>
<content type='text'>
This makes the LLVM assembly look better. E.g.:

     define void @foo() #0 { ret void }
     attributes #0 = { nounwind noinline ssp }


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175605 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Optimistically analyse Phi cycles</title>
<updated>2012-12-10T23:02:41Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>arnolds@codeaurora.org</email>
</author>
<published>2012-12-10T23:02:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2b475922e6169098606006a69d765160caa77848'/>
<id>urn:sha1:2b475922e6169098606006a69d765160caa77848</id>
<content type='text'>
Analyse Phis under the starting assumption that they are NoAlias. Recursively
look at their inputs.
If they MayAlias/MustAlias there must be an input that makes them so.

Addresses bug 14351.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169788 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Phi speculation improvement for BasicAA</title>
<updated>2012-11-17T02:33:15Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-17T02:33:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=c37f502d48f7eb34099bb60ece63400657fb180e'/>
<id>urn:sha1:c37f502d48f7eb34099bb60ece63400657fb180e</id>
<content type='text'>
This is a partial solution to PR14351. It removes some of the special
significance of the first incoming phi value in the phi aliasing checking logic
in BasicAA. In the context of a loop, the old logic assumes that the first
incoming value is the interesting one (meaning that it is the one that comes
from outside the loop), but this is often not the case.  With this change, we
now test first the incoming value that comes from a block other than the parent
of the phi being tested.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168245 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Don't infer whether a value is captured in the current function from the</title>
<updated>2012-11-05T10:48:24Z</updated>
<author>
<name>Richard Osborne</name>
<email>richard@xmos.com</email>
</author>
<published>2012-11-05T10:48:24Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=544533301e51e697abf7cc05979208d0ffc30973'/>
<id>urn:sha1:544533301e51e697abf7cc05979208d0ffc30973</id>
<content type='text'>
'nocapture' attribute.

The nocapture attribute only specifies that no copies are made that
outlive the function. This isn't the same as there being no copies at all.
This fixes PR14045.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167381 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BasicAA: Recognize cyclic NoAlias phis</title>
<updated>2012-09-06T14:41:53Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>arnolds@codeaurora.org</email>
</author>
<published>2012-09-06T14:41:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3d5f96ee1bf5189e324089976026ed09b6be9e58'/>
<id>urn:sha1:3d5f96ee1bf5189e324089976026ed09b6be9e58</id>
<content type='text'>
Enhances basic alias analysis to recognize phis whose first incoming values are
NoAlias and whose other incoming values are just the phi node itself through
some amount of recursion.

Example: With this change basicaa reports that ptr_phi and ptr_phi2 do not alias
each other.

bb:
 ptr = ptr2 + 1

loop:
  ptr_phi = phi [bb, ptr], [loop, ptr_plus_one]
  ptr2_phi = phi [bb, ptr2], [loop, ptr2_plus_one]
  ...
  ptr_plus_one = gep ptr_phi, 1
  ptr2_plus_one = gep ptr2_phi, 1

This enables the elimination of one load in code like the following:

extern int foo;

int test_noalias(int *ptr, int num, int* coeff) {
  int *ptr2 = ptr;
  int result = (*ptr++) * (*coeff--);
  while (num--) {
    *ptr2++ = *ptr;
    result +=  (*coeff--) * (*ptr++);
  }
  *ptr = foo;
  return result;
}

Part 2/2 of fix for PR13564.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163319 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BasicAA: GEPs of NoAlias'ing base ptr with equivalent indices are NoAlias</title>
<updated>2012-09-06T14:31:51Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>arnolds@codeaurora.org</email>
</author>
<published>2012-09-06T14:31:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=029032693fdb065b6edfff6d68df188f98bee8ac'/>
<id>urn:sha1:029032693fdb065b6edfff6d68df188f98bee8ac</id>
<content type='text'>
If we can show that the base pointers of two GEPs don't alias each other using
precise analysis and the indices and base offset are equal then the two GEPs
also don't alias each other.
This is primarily needed for the follow up patch that analyses NoAlias'ing PHI
nodes.

Part 1/2 of fix for PR13564.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163317 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Convert the uses of '|&amp;' to use '2&gt;&amp;1 |' instead, which works on old</title>
<updated>2012-07-02T18:37:59Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2012-07-02T18:37:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=49589f0d0e35f643e697ab7ae8a51a530d38b0d8'/>
<id>urn:sha1:49589f0d0e35f643e697ab7ae8a51a530d38b0d8</id>
<content type='text'>
versions of Bash. In addition, I can back out the change to the lit
built-in shell test runner to support this.

This should fix the majority of fallout on Darwin, but I suspect there
will be a few straggling issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159544 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>FileCheck-ize these tests. Harden some of them.</title>
<updated>2012-04-24T09:15:38Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2012-04-24T09:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d5cc8b81ca5d0a09a1da7f8b094907eb63a582e6'/>
<id>urn:sha1:d5cc8b81ca5d0a09a1da7f8b094907eb63a582e6</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155432 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
