<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/JumpThreading, branch release_25</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/JumpThreading?h=release_25</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/JumpThreading?h=release_25'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2009-01-19T21:20:34Z</updated>
<entry>
<title>Fix PR3353, infinitely jump threading an infinite loop make from switches.</title>
<updated>2009-01-19T21:20:34Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2009-01-19T21:20:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2c7ed11d93239dacf81540e2307f0db456bb9122'/>
<id>urn:sha1:2c7ed11d93239dacf81540e2307f0db456bb9122</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62529 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix PR3298, a crash in Jump Threading.  Apparently even </title>
<updated>2009-01-09T06:08:12Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2009-01-09T06:08:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2a99b482a62e3f1ac3fd716fba430ac32fedade4'/>
<id>urn:sha1:2a99b482a62e3f1ac3fd716fba430ac32fedade4</id>
<content type='text'>
jump threading can have bugs, who knew? ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61983 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>testcase for br undef folding.</title>
<updated>2008-12-03T07:48:27Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-12-03T07:48:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2a5dc33c573365f30cbae9ac91416d635f40e4cd'/>
<id>urn:sha1:2a5dc33c573365f30cbae9ac91416d635f40e4cd</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60471 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Teach jump threading some more simple tricks:</title>
<updated>2008-12-03T07:48:08Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-12-03T07:48:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=421fa9e32e445c972df4a981c60fbec4e21ac187'/>
<id>urn:sha1:421fa9e32e445c972df4a981c60fbec4e21ac187</id>
<content type='text'>
1) have it fold "br undef", which does occur with
   surprising frequency as jump threading iterates.
2) teach j-t to delete dead blocks.  This removes the successor
   edges, reducing the in-edges of other blocks, allowing 
   recursive simplification.
3) Fold things like:
     br COND, BBX, BBY
  BBX:
     br COND, BBZ, BBW

   which also happens because jump threading iterates.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60470 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>don't call MergeBasicBlockIntoOnlyPred on a block whose only</title>
<updated>2008-11-28T19:54:49Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-11-28T19:54:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f5102a0f088e7c96f7028bf7ca1c24975c314fff'/>
<id>urn:sha1:f5102a0f088e7c96f7028bf7ca1c24975c314fff</id>
<content type='text'>
predecessor is itself.  This doesn't make sense, and this is
a dead infinite loop anyway.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60210 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix PR3138: if we merge the entry block into another block, make sure to</title>
<updated>2008-11-27T19:25:19Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-11-27T19:25:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3d86d242c69a26ba2e6102f32b00b04884c4c9b1'/>
<id>urn:sha1:3d86d242c69a26ba2e6102f32b00b04884c4c9b1</id>
<content type='text'>
move the other block back up into the entry position!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60179 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Make jump threading substantially more powerful, in the following ways:</title>
<updated>2008-11-27T05:07:53Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-11-27T05:07:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=69e067fdd86d34cb81ccdffb82415b4f89144218'/>
<id>urn:sha1:69e067fdd86d34cb81ccdffb82415b4f89144218</id>
<content type='text'>
1. Make it fold blocks separated by an unconditional branch.  This enables
   jump threading to see a broader scope.
2. Make jump threading able to eliminate locally redundant loads when they
   feed the branch condition of a block.  This frequently occurs due to
   reg2mem running.
3. Make jump threading able to eliminate *partially redundant* loads when
   they feed the branch condition of a block.  This is common in code with
   lots of loads and stores like C++ code and 255.vortex.

This implements thread-loads.ll and rdar://6402033.

Per the fixme's, several pieces of this should be moved into Transforms/Utils.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60148 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix a crash when threading a block that includes a MRV call result.</title>
<updated>2008-05-05T20:21:22Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-05-05T20:21:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=8554cc2ea79861ddf43998bff634d1682e848216'/>
<id>urn:sha1:8554cc2ea79861ddf43998bff634d1682e848216</id>
<content type='text'>
DemoteRegToStack doesn't work with MRVs yet, because it relies on the
ability to load/store things.

This fixes PR2285.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50667 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Don't infininitely thread branches when a threaded edge</title>
<updated>2008-04-25T04:12:29Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-04-25T04:12:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=eede65ce6cb29c8f3a701be8606e95c9a213efff'/>
<id>urn:sha1:eede65ce6cb29c8f3a701be8606e95c9a213efff</id>
<content type='text'>
goes back to the block, e.g.:

  Threading edge through bool from 'bb37.us.thread3829' to 'bb37.us' with cost: 1, across block:

bb37.us:		; preds = %bb37.us.thread3829, %bb37.us, %bb33
	%D1361.1.us = phi i32 [ %tmp36, %bb33 ], [ %D1361.1.us, %bb37.us ], [ 0, %bb37.us.thread3829 ]		; &lt;i32&gt; [#uses=2]
	%tmp39.us = icmp eq i32 %D1361.1.us, 0		; &lt;i1&gt; [#uses=1]
	br i1 %tmp39.us, label %bb37.us, label %bb42.us



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50251 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Start doing the significantly useful part of jump threading: handle cases</title>
<updated>2008-04-22T21:40:39Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-04-22T21:40:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a5ddb59a1319ccd23844c74809a64bc4d88f59d1'/>
<id>urn:sha1:a5ddb59a1319ccd23844c74809a64bc4d88f59d1</id>
<content type='text'>
where a comparison has a phi input and that phi is a constant.  For example,
stuff like:

  Threading edge through bool from 'bb2149' to 'bb2231' with cost: 1, across block:
bb2237:		; preds = %bb2231, %bb2149
	%tmp2328.rle = phi i32 [ %tmp2232, %bb2231 ], [ %tmp2232439, %bb2149 ]		; &lt;i32&gt; [#uses=2]
	%done.0 = phi i32 [ %done.2, %bb2231 ], [ 0, %bb2149 ]		; &lt;i32&gt; [#uses=1]
	%tmp2239 = icmp eq i32 %done.0, 0		; &lt;i1&gt; [#uses=1]
	br i1 %tmp2239, label %bb2231, label %bb2327

or

bb38.i298:		; preds = %bb33.i295, %bb1693
	%tmp39.i296.rle = phi %struct.ibox* [ null, %bb1693 ], [ %tmp39.i296.rle1109, %bb33.i295 ]		; &lt;%struct.ibox*&gt; [#uses=2]
	%minspan.1.i291.reg2mem.1 = phi i32 [ 32000, %bb1693 ], [ %minspan.0.i288, %bb33.i295 ]		; &lt;i32&gt; [#uses=1]
	%tmp40.i297 = icmp eq %struct.ibox* %tmp39.i296.rle, null		; &lt;i1&gt; [#uses=1]
	br i1 %tmp40.i297, label %implfeeds.exit311, label %bb43.i301

This triggers thousands of times in spec.



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