<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emscripten-fastcomp/test/Transforms/SimplifyCFG/MagicPointer.ll, branch 1.13.0</title>
<subtitle>LLVM with the emscripten fastcomp javascript backend</subtitle>
<id>https://git.amat.us/emscripten-fastcomp/atom/test/Transforms/SimplifyCFG/MagicPointer.ll?h=1.13.0</id>
<link rel='self' href='https://git.amat.us/emscripten-fastcomp/atom/test/Transforms/SimplifyCFG/MagicPointer.ll?h=1.13.0'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/'/>
<updated>2011-01-29T04:46:23Z</updated>
<entry>
<title>Re-apply r124518 with fix. Watch out for invalidated iterator.</title>
<updated>2011-01-29T04:46:23Z</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2011-01-29T04:46:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=c3f507f98a0747bd256e1c13536060b6fc5c4b62'/>
<id>urn:sha1:c3f507f98a0747bd256e1c13536060b6fc5c4b62</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124526 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Revert r124518. It broke Linux self-host.</title>
<updated>2011-01-29T02:43:04Z</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2011-01-29T02:43:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=b0a42fdb36b575a8ad939ca9624105908aeedf51'/>
<id>urn:sha1:b0a42fdb36b575a8ad939ca9624105908aeedf51</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124522 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.</title>
<updated>2011-01-29T01:29:26Z</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2011-01-29T01:29:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=5e6940788fb2f8cf3ce4219d3ac0f78317f54696'/>
<id>urn:sha1:5e6940788fb2f8cf3ce4219d3ac0f78317f54696</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124518 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Revert r124462. There are a few big regressions that I need to fix first.</title>
<updated>2011-01-28T07:12:38Z</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2011-01-28T07:12:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=1b5c0cb71dd9d529a14cedb4bd89d544bf7e61c3'/>
<id>urn:sha1:1b5c0cb71dd9d529a14cedb4bd89d544bf7e61c3</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124478 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>- Stop simplifycfg from duplicating "ret" instructions into unconditional</title>
<updated>2011-01-28T02:19:21Z</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2011-01-28T02:19:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=40f64cb0de40802ddd2f928b62e9564e1e721ff3'/>
<id>urn:sha1:40f64cb0de40802ddd2f928b62e9564e1e721ff3</id>
<content type='text'>
  branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
  allocation is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124462 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Teach SimplifyCFG about magic pointer constants.</title>
<updated>2010-02-05T22:03:18Z</updated>
<author>
<name>Jakob Stoklund Olesen</name>
<email>stoklund@2pi.dk</email>
</author>
<published>2010-02-05T22:03:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp/commit/?id=58e9ee85fda5083e2eea987917e8eab6ba31fe5e'/>
<id>urn:sha1:58e9ee85fda5083e2eea987917e8eab6ba31fe5e</id>
<content type='text'>
Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.

Code like this:

void f(const char *x) {
  if (!x)
    puts("null");
  else if ((uintptr_t)x == 1)
    puts("one");
  else if (x == (char*)2 || x == (char*)3)
    puts("two");
  else if ((intptr_t)x == 4)
    puts("four");
  else
    puts(x);
}

Now becomes a switch:

define void @f(i8* %x) nounwind ssp {
entry:
  %magicptr23 = ptrtoint i8* %x to i64            ; &lt;i64&gt; [#uses=1]
  switch i64 %magicptr23, label %if.else16 [
    i64 0, label %if.then
    i64 1, label %if.then2
    i64 2, label %if.then9
    i64 3, label %if.then9
    i64 4, label %if.then14
  ]

Note that LLVM's own DenseMap uses magic pointers.

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