<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emscripten-fastcomp/test/CodeGen/X86/StackColoring.ll, branch 1.13.2</title>
<subtitle>LLVM with the emscripten fastcomp javascript backend</subtitle>
<id>https://git.amat.us/emscripten-fastcomp/atom/test/CodeGen/X86/StackColoring.ll?h=1.13.2</id>
<link rel='self' href='https://git.amat.us/emscripten-fastcomp/atom/test/CodeGen/X86/StackColoring.ll?h=1.13.2'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/'/>
<updated>2013-05-17T18:24:54Z</updated>
<entry>
<title>Cherry-pick r181922: Fix miscompile due to StackColoring incorrectly merging stack slots (PR15707)</title>
<updated>2013-05-17T18:24:54Z</updated>
<author>
<name>Mark Seaborn</name>
<email>mseaborn@chromium.org</email>
</author>
<published>2013-05-17T18:24:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=4284726d05e5a8397e66e259c3bba323f0966267'/>
<id>urn:sha1:4284726d05e5a8397e66e259c3bba323f0966267</id>
<content type='text'>
IR optimisation passes can result in a basic block that contains:

  llvm.lifetime.start(%buf)
  ...
  llvm.lifetime.end(%buf)
  ...
  llvm.lifetime.start(%buf)

Before this change, calculateLiveIntervals() was ignoring the second
lifetime.start() and was regarding %buf as being dead from the
lifetime.end() through to the end of the basic block.  This can cause
StackColoring to incorrectly merge %buf with another stack slot.

Fix by removing the incorrect Starts[pos].isValid() and
Finishes[pos].isValid() checks.

Just doing:
      Starts[pos] = Indexes-&gt;getMBBStartIdx(MBB);
      Finishes[pos] = Indexes-&gt;getMBBEndIdx(MBB);
unconditionally would be enough to fix the bug, but it causes some
test failures due to stack slots not being merged when they were
before.  So, in order to keep the existing tests passing, treat LiveIn
and LiveOut separately rather than approximating the live ranges by
merging LiveIn and LiveOut.

This fixes PR15707.
Patch by Mark Seaborn.

BUG=https://code.google.com/p/nativeclient/issues/detail?id=3374

Review URL: https://codereview.chromium.org/15302009
</content>
</entry>
<entry>
<title>Stack Coloring: We have code that checks that all of the uses of allocas</title>
<updated>2012-09-13T12:38:37Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-13T12:38:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=0cd19b93017fcaba737b15ea4da39c460feb5670'/>
<id>urn:sha1:0cd19b93017fcaba737b15ea4da39c460feb5670</id>
<content type='text'>
are within the lifetime zone. Sometime legitimate usages of allocas are
hoisted outside of the lifetime zone. For example, GEPS may calculate the
address of a member of an allocated struct. This commit makes sure that
we only check (abort regions or assert) for instructions that read and write
memory using stack frames directly. Notice that by allowing legitimate
usages outside the lifetime zone we also stop checking for instructions
which use derivatives of allocas. We will catch less bugs in user code
and in the compiler itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163791 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Stack coloring: remove lifetime intervals which contain escaped allocas.</title>
<updated>2012-09-12T04:57:37Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-12T04:57:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=0a16da445740ca6fcd7a7ca571c1917e77315904'/>
<id>urn:sha1:0a16da445740ca6fcd7a7ca571c1917e77315904</id>
<content type='text'>
The input program may contain intructions which are not inside lifetime
markers. This can happen due to a bug in the compiler or due to a bug in
user code (for example, returning a reference to a local variable).
This commit adds checks that all of the instructions in the function and
invalidates lifetime ranges which do not contain all of the instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163678 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Stack Coloring: Handle the case where END markers come before BEGIN markers properly.</title>
<updated>2012-09-10T18:51:09Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-10T18:51:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=6165dba25f3374ce340b420ab9a360623c26fdc3'/>
<id>urn:sha1:6165dba25f3374ce340b420ab9a360623c26fdc3</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163530 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Stack Coloring:  Add support for multiple regions of the same slot, within a single basic block.</title>
<updated>2012-09-10T12:39:35Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-10T12:39:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=e47feeb823ebf496e82db6a666d4c0fbaeb158b4'/>
<id>urn:sha1:e47feeb823ebf496e82db6a666d4c0fbaeb158b4</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163507 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Teach the DAGBuilder about lifetime markers which are generated from PHINodes.</title>
<updated>2012-09-10T08:43:23Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-10T08:43:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=9a2ae00c85c553108f3d57b134f0aceef5ae3372'/>
<id>urn:sha1:9a2ae00c85c553108f3d57b134f0aceef5ae3372</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163494 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Disable stack coloring by default in order to resolve the i386 failures.</title>
<updated>2012-09-06T14:27:06Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-06T14:27:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=79cb162e5d7aeaa3602bf4a7afa253232f461b33'/>
<id>urn:sha1:79cb162e5d7aeaa3602bf4a7afa253232f461b33</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163316 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix the test by specifying an exact cpu model.</title>
<updated>2012-09-06T10:33:33Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-06T10:33:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=a76d7d64a4aa39e459f0807143a95c2a1c046f9f'/>
<id>urn:sha1:a76d7d64a4aa39e459f0807143a95c2a1c046f9f</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163307 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add a new optimization pass: Stack Coloring, that merges disjoint static allocations (allocas). Allocas are known to be</title>
<updated>2012-09-06T09:17:37Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2012-09-06T09:17:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=c05d30601ced172b55be81bb529df6be91d6ae15'/>
<id>urn:sha1:c05d30601ced172b55be81bb529df6be91d6ae15</id>
<content type='text'>
disjoint if they are marked by disjoint lifetime markers (@llvm.lifetime.XXX intrinsics).



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