<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/test/Analysis/MemoryDependenceAnalysis, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-12-25T00:05:15+00:00</updated>
<entry>
<title>Migrate function attribute "no-frame-pointer-elim-non-leaf" to "frame-pointer"="non-leaf" as cleanups after D56351</title>
<updated>2019-12-25T00:05:15+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2019-12-25T00:02:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=eb16435b5e5df68d2410bbe4c08ef8ce8aa8b2f4'/>
<id>urn:sha1:eb16435b5e5df68d2410bbe4c08ef8ce8aa8b2f4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[AliasAnalysis/NewPassManager] Invalidate AAManager less often.</title>
<updated>2019-04-30T22:15:47+00:00</updated>
<author>
<name>Alina Sbirlea</name>
<email>asbirlea@google.com</email>
</author>
<published>2019-04-30T22:15:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=ba48a2c5e856fd4221a0551d3b480a1b7fccac02'/>
<id>urn:sha1:ba48a2c5e856fd4221a0551d3b480a1b7fccac02</id>
<content type='text'>
Summary:
This is a redo of D60914.

The objective is to not invalidate AAManager, which is stateless, unless
there is an explicit invalidate in one of the AAResults.

To achieve this, this patch adds an API to PAC, to check precisely this:
is this analysis not invalidated explicitly == is this analysis not abandoned == is this analysis stateless, so preserved without explicitly being marked as preserved by everyone

Reviewers: chandlerc

Subscribers: mehdi_amini, jlebar, george.burgess.iv, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61284

llvm-svn: 359622
</content>
</entry>
<entry>
<title>Revert [AliasAnalysis] AAResults preserves AAManager.</title>
<updated>2019-04-24T00:28:29+00:00</updated>
<author>
<name>Alina Sbirlea</name>
<email>asbirlea@google.com</email>
</author>
<published>2019-04-24T00:28:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b341efce31feb12f416bc01b62fd4c47fb223903'/>
<id>urn:sha1:b341efce31feb12f416bc01b62fd4c47fb223903</id>
<content type='text'>
Triggers use-after-free.

llvm-svn: 359055
</content>
</entry>
<entry>
<title>[AliasAnalysis] AAResults preserves AAManager.</title>
<updated>2019-04-23T17:21:18+00:00</updated>
<author>
<name>Alina Sbirlea</name>
<email>asbirlea@google.com</email>
</author>
<published>2019-04-23T17:21:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a809e8e5e759d333e3183b4f1d270cfc4ad9d2dd'/>
<id>urn:sha1:a809e8e5e759d333e3183b4f1d270cfc4ad9d2dd</id>
<content type='text'>
Summary:
AAResults should not invalidate AAManager.
Update tests.

Reviewers: chandlerc

Subscribers: mehdi_amini, jlebar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60914

llvm-svn: 359014
</content>
</entry>
<entry>
<title>[MemDep] Fixed handling of invariant.group</title>
<updated>2018-05-18T22:40:34+00:00</updated>
<author>
<name>Piotr Padlewski</name>
<email>piotr.padlewski@gmail.com</email>
</author>
<published>2018-05-18T22:40:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=153fe60079b0380dc8f3cd4ed107fbb859284956'/>
<id>urn:sha1:153fe60079b0380dc8f3cd4ed107fbb859284956</id>
<content type='text'>
Summary:
Memdep had funny bug related to invariant.groups - because it did not
invalidated cache, in some very rare cases it was possible to show memory
dependence of the instruction that was deleted, but because other
instruction took it's place it resulted in call to vtable!
Thanks @amharc for repro!.

Reviewers: dberlin, kuhar, amharc

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D45320

Co-authored-by: Krzysztof Pszeniczny &lt;krzysztof.pszeniczny@gmail.com&gt;
llvm-svn: 332781
</content>
</entry>
<entry>
<title>[PM] The assumption cache is fundamentally designed to be self-updating,</title>
<updated>2017-01-15T00:26:18+00:00</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2017-01-15T00:26:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2f19a324cb07c893ece46a45521c0a0bbd28a74a'/>
<id>urn:sha1:2f19a324cb07c893ece46a45521c0a0bbd28a74a</id>
<content type='text'>
mark it as never invalidated in the new PM.

The old PM already required this to work, and after a discussion with
Hal this seems to really be the only sensible answer. The cache
gracefully degrades as the IR is mutated, and most things which do this
should already be incrementally updating the cache.

This gets rid of a bunch of logic preserving and testing the
invalidation of this analysis.

llvm-svn: 292039
</content>
</entry>
<entry>
<title>[PM] Teach MemDep to invalidate its result object when its cached</title>
<updated>2016-12-27T19:33:04+00:00</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2016-12-27T19:33:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e14524ca30735e5e9aeee8ac3173f37ec5ed68f8'/>
<id>urn:sha1:e14524ca30735e5e9aeee8ac3173f37ec5ed68f8</id>
<content type='text'>
analysis handles become invalid.

Add a test case for its invalidation logic.

llvm-svn: 290620
</content>
</entry>
<entry>
<title>[MDA] change BlockScanLimit into a command line option.</title>
<updated>2015-07-21T21:50:39+00:00</updated>
<author>
<name>Jingyue Wu</name>
<email>jingyue@google.com</email>
</author>
<published>2015-07-21T21:50:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=d058ea927f613ef4c787526c040dd6a957fc76d2'/>
<id>urn:sha1:d058ea927f613ef4c787526c040dd6a957fc76d2</id>
<content type='text'>
Summary:
In the benchmark (https://github.com/vetter/shoc) we are researching,
the duplicated load is not eliminated because MemoryDependenceAnalysis
hit the BlockScanLimit. This patch change it into a command line option
instead of a hardcoded value.

Patched by Xuetian Weng. 

Test Plan: test/Analysis/MemoryDependenceAnalysis/memdep-block-scan-limit.ll

Reviewers: jingyue, reames

Subscribers: reames, llvm-commits

Differential Revision: http://reviews.llvm.org/D11366

llvm-svn: 242842
</content>
</entry>
<entry>
<title>[opaque pointer type] Add textual IR support for explicit type parameter to load instruction</title>
<updated>2015-02-27T21:17:42+00:00</updated>
<author>
<name>David Blaikie</name>
<email>dblaikie@gmail.com</email>
</author>
<published>2015-02-27T21:17:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a79ac14fa68297f9888bc70a10df5ed9b8864e38'/>
<id>urn:sha1:a79ac14fa68297f9888bc70a10df5ed9b8864e38</id>
<content type='text'>
Essentially the same as the GEP change in r230786.

A similar migration script can be used to update test cases, though a few more
test case improvements/changes were required this time around: (r229269-r229278)

import fileinput
import sys
import re

pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)")

for line in sys.stdin:
  sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line))

Reviewers: rafael, dexonsmith, grosser

Differential Revision: http://reviews.llvm.org/D7649

llvm-svn: 230794
</content>
</entry>
<entry>
<title>[opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction</title>
<updated>2015-02-27T19:29:02+00:00</updated>
<author>
<name>David Blaikie</name>
<email>dblaikie@gmail.com</email>
</author>
<published>2015-02-27T19:29:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=79e6c74981f4755ed55b38175d8cd34ec91395b1'/>
<id>urn:sha1:79e6c74981f4755ed55b38175d8cd34ec91395b1</id>
<content type='text'>
One of several parallel first steps to remove the target type of pointers,
replacing them with a single opaque pointer type.

This adds an explicit type parameter to the gep instruction so that when the
first parameter becomes an opaque pointer type, the type to gep through is
still available to the instructions.

* This doesn't modify gep operators, only instructions (operators will be
  handled separately)

* Textual IR changes only. Bitcode (including upgrade) and changing the
  in-memory representation will be in separate changes.

* geps of vectors are transformed as:
    getelementptr &lt;4 x float*&gt; %x, ...
  -&gt;getelementptr float, &lt;4 x float*&gt; %x, ...
  Then, once the opaque pointer type is introduced, this will ultimately look
  like:
    getelementptr float, &lt;4 x ptr&gt; %x
  with the unambiguous interpretation that it is a vector of pointers to float.

* address spaces remain on the pointer, not the type:
    getelementptr float addrspace(1)* %x
  -&gt;getelementptr float, float addrspace(1)* %x
  Then, eventually:
    getelementptr float, ptr addrspace(1) %x

Importantly, the massive amount of test case churn has been automated by
same crappy python code. I had to manually update a few test cases that
wouldn't fit the script's model (r228970,r229196,r229197,r229198). The
python script just massages stdin and writes the result to stdout, I
then wrapped that in a shell script to handle replacing files, then
using the usual find+xargs to migrate all the files.

update.py:
import fileinput
import sys
import re

ibrep = re.compile(r"(^.*?[^%\w]getelementptr inbounds )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))")
normrep = re.compile(       r"(^.*?[^%\w]getelementptr )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))")

def conv(match, line):
  if not match:
    return line
  line = match.groups()[0]
  if len(match.groups()[5]) == 0:
    line += match.groups()[2]
  line += match.groups()[3]
  line += ", "
  line += match.groups()[1]
  line += "\n"
  return line

for line in sys.stdin:
  if line.find("getelementptr ") == line.find("getelementptr inbounds"):
    if line.find("getelementptr inbounds") != line.find("getelementptr inbounds ("):
      line = conv(re.match(ibrep, line), line)
  elif line.find("getelementptr ") != line.find("getelementptr ("):
    line = conv(re.match(normrep, line), line)
  sys.stdout.write(line)

apply.sh:
for name in "$@"
do
  python3 `dirname "$0"`/update.py &lt; "$name" &gt; "$name.tmp" &amp;&amp; mv "$name.tmp" "$name"
  rm -f "$name.tmp"
done

The actual commands:
From llvm/src:
find test/ -name *.ll | xargs ./apply.sh
From llvm/src/tools/clang:
find test/ -name *.mm -o -name *.m -o -name *.cpp -o -name *.c | xargs -I '{}' ../../apply.sh "{}"
From llvm/src/tools/polly:
find test/ -name *.ll | xargs ./apply.sh

After that, check-all (with llvm, clang, clang-tools-extra, lld,
compiler-rt, and polly all checked out).

The extra 'rm' in the apply.sh script is due to a few files in clang's test
suite using interesting unicode stuff that my python script was throwing
exceptions on. None of those files needed to be migrated, so it seemed
sufficient to ignore those cases.

Reviewers: rafael, dexonsmith, grosser

Differential Revision: http://reviews.llvm.org/D7636

llvm-svn: 230786
</content>
</entry>
</feed>
