<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/JumpThreading, branch release_23</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/JumpThreading?h=release_23</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/JumpThreading?h=release_23'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2008-05-05T20:21:22Z</updated>
<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>
<entry>
<title>Dig through multiple levels of AND to thread jumps if needed.</title>
<updated>2008-04-22T20:46:09Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-04-22T20:46:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=ae65b3c7912138ec636b3bde5ff528d948161651'/>
<id>urn:sha1:ae65b3c7912138ec636b3bde5ff528d948161651</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50106 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Teach jump threading to thread through blocks like:</title>
<updated>2008-04-22T07:05:46Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-04-22T07:05:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=6bf77500c655520a04ea8640af6dccbcf995a754'/>
<id>urn:sha1:6bf77500c655520a04ea8640af6dccbcf995a754</id>
<content type='text'>
  br (and X, phi(Y, Z, false)), label L1, label L2

This triggers once on 252.eon and 6 times on 176.gcc.  Blocks 
in question often look like this:

bb262:		; preds = %bb261, %bb248
	%iftmp.251.0 = phi i1 [ true, %bb261 ], [ false, %bb248 ]		; &lt;i1&gt; [#uses=4]
	%tmp270 = icmp eq %struct.rtx_def* %tmp.0.i, null		; &lt;i1&gt; [#uses=1]
	%bothcond = or i1 %iftmp.251.0, %tmp270		; &lt;i1&gt; [#uses=1]
	br i1 %bothcond, label %bb288, label %bb273

In this case, it is clear that it doesn't matter if tmp.0.i is null when coming from bb261.  When coming from bb248, it is all that matters.


Another random example:

check_asm_operands.exit:		; preds = %check_asm_operands.exit.thr_comm, %bb30.i, %bb12.i, %bb6.i413
	%tmp.0.i420 = phi i1 [ true, %bb6.i413 ], [ true, %bb12.i ], [ true, %bb30.i ], [ false, %check_asm_operands.exit.thr_comm ; &lt;i1&gt; [#uses=1]
	call void @llvm.stackrestore( i8* %savedstack ) nounwind 
	%tmp4389 = icmp eq i32 %added_sets_1.0, 0		; &lt;i1&gt; [#uses=1]
	%tmp4394 = icmp eq i32 %added_sets_2.0, 0		; &lt;i1&gt; [#uses=1]
	%bothcond80 = and i1 %tmp4389, %tmp4394		; &lt;i1&gt; [#uses=1]
	%bothcond81 = and i1 %bothcond80, %tmp.0.i420		; &lt;i1&gt; [#uses=1]
	br i1 %bothcond81, label %bb4398, label %bb4397

Here is the case from 252.eon:

bb290.i.i:		; preds = %bb23.i57.i.i, %bb8.i39.i.i, %bb100.i.i, %bb100.i.i, %bb85.i.i110
	%myEOF.1.i.i = phi i1 [ true, %bb100.i.i ], [ true, %bb100.i.i ], [ true, %bb85.i.i110 ], [ true, %bb8.i39.i.i ], [ false, %bb23.i57.i.i ]		; &lt;i1&gt; [#uses=2]
	%i.4.i.i = phi i32 [ %i.1.i.i, %bb85.i.i110 ], [ %i.0.i.i, %bb100.i.i ], [ %i.0.i.i, %bb100.i.i ], [ %i.3.i.i, %bb8.i39.i.i ], [ %i.3.i.i, %bb23.i57.i.i ]		; &lt;i32&gt; [#uses=3]
	%tmp292.i.i = load i8* %tmp16.i.i100, align 1		; &lt;i8&gt; [#uses=1]
	%tmp293.not.i.i = icmp ne i8 %tmp292.i.i, 0		; &lt;i1&gt; [#uses=1]
	%bothcond.i.i = and i1 %tmp293.not.i.i, %myEOF.1.i.i		; &lt;i1&gt; [#uses=1]
	br i1 %bothcond.i.i, label %bb202.i.i, label %bb301.i.i
  Factoring out 3 common predecessors.

On the path from any blocks other than bb23.i57.i.i, the load and compare 
are dead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50096 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>add a basic testcase.</title>
<updated>2008-04-22T06:35:14Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-04-22T06:35:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f29984f695a16d68f6983c7741e1ae77d1619c5d'/>
<id>urn:sha1:f29984f695a16d68f6983c7741e1ae77d1619c5d</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50093 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
