<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/LoopStrengthReduce, branch release_25</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/LoopStrengthReduce?h=release_25</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/LoopStrengthReduce?h=release_25'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2009-02-17T19:32:45Z</updated>
<entry>
<title>Merge 64579 from mainline.</title>
<updated>2009-02-17T19:32:45Z</updated>
<author>
<name>Tanya Lattner</name>
<email>tonic@nondot.org</email>
</author>
<published>2009-02-17T19:32:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3bf2b5ea6fe27c2528354f40dab3ed39bdb35f89'/>
<id>urn:sha1:3bf2b5ea6fe27c2528354f40dab3ed39bdb35f89</id>
<content type='text'>
Fix pr3571: If stride is a value defined by an instruction, make sure it dominates the loop preheader. When IV users are strength reduced, the stride is inserted into the preheader. It could create a use before def situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_25@64789 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Merge 64177 from mainline.</title>
<updated>2009-02-14T00:57:30Z</updated>
<author>
<name>Tanya Lattner</name>
<email>tonic@nondot.org</email>
</author>
<published>2009-02-14T00:57:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=67a8eaa03b0a0fb119d7ac94b49969ad8b6ccbe9'/>
<id>urn:sha1:67a8eaa03b0a0fb119d7ac94b49969ad8b6ccbe9</id>
<content type='text'>
Fix PR 3471, and some cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_25@64517 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix the time regression I introduced in 464.h264ref with</title>
<updated>2009-01-14T02:35:31Z</updated>
<author>
<name>Dale Johannesen</name>
<email>dalej@apple.com</email>
</author>
<published>2009-01-14T02:35:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2f46bb8178e30e3b845859a44b57c048db06ef84'/>
<id>urn:sha1:2f46bb8178e30e3b845859a44b57c048db06ef84</id>
<content type='text'>
my earlier patch to this file.

The issue there was that all uses of an IV inside a loop
are actually references to Base[IV*2], and there was one
use outside that was the same but LSR didn't see the base
or the scaling because it didn't recurse into uses outside
the loop; thus, it used base+IV*scale mode inside the loop
instead of pulling base out of the loop.  This was extra bad
because register pressure later forced both base and IV into
memory.  Doing that recursion, at least enough
to figure out addressing modes, is a good idea in general;
the change in AddUsersIfInteresting does this.  However,
there were side effects....

It is also possible for recursing outside the loop to
introduce another IV where there was only 1 before (if
the refs inside are not scaled and the ref outside is).
I don't think this is a common case, but it's in the testsuite.
It is right to be very aggressive about getting rid of
such introduced IVs (CheckForIVReuse and the handling of
nonzero RewriteFactor in StrengthReduceStridedIVUsers).
In the testcase in question the new IV produced this way
has both a nonconstant stride and a nonzero base, neither
of which was handled before.  And when inserting 
new code that feeds into a PHI, it's right to put such 
code at the original location rather than in the PHI's 
immediate predecessor(s) when the original location is outside 
the loop (a case that couldn't happen before)
(RewriteInstructionToUseNewBase); better to avoid making
multiple copies of it in this case.

Also, the mechanism for keeping SCEV's corresponding to GEP's
no longer works, as the GEP might change after its SCEV
is remembered, invalidating the SCEV, and we might get a bad
SCEV value when looking up the GEP again for a later loop.  
This also couldn't happen before, as we weren't recursing
into GEP's outside the loop.

Also, when we build an expression that involves a (possibly
non-affine) IV from a different loop as well as an IV from
the one we're interested in (containsAddRecFromDifferentLoop),
don't recurse into that.  We can't do much with it and will
get in trouble if we try to create new non-affine IVs or something.

More testcases are coming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62212 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Remove. </title>
<updated>2008-09-09T21:41:34Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-09-09T21:41:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a009d2ef54fa8dc1c963ac6612d6c6f0a8d7712e'/>
<id>urn:sha1:a009d2ef54fa8dc1c963ac6612d6c6f0a8d7712e</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56018 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>fix overflow check.</title>
<updated>2008-09-09T20:54:34Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-09-09T20:54:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=4b3f08bac7def05de67f5c0e9f15c53d0870c7c1'/>
<id>urn:sha1:4b3f08bac7def05de67f5c0e9f15c53d0870c7c1</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56011 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>xfail</title>
<updated>2008-09-08T16:24:30Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-09-08T16:24:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=ac8ab789ac6de1d4d40cde6e7847c9e21ac31c35'/>
<id>urn:sha1:ac8ab789ac6de1d4d40cde6e7847c9e21ac31c35</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55914 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Check iteration count.</title>
<updated>2008-09-03T00:10:56Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-09-03T00:10:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a9348dc7acc6f292425721c178311d7b0b5144b6'/>
<id>urn:sha1:a9348dc7acc6f292425721c178311d7b0b5144b6</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55680 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>If all IV uses are extending integer IV then change the type of IV itself, if possible.</title>
<updated>2008-09-02T22:18:08Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-09-02T22:18:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=108f92e376fd5f7c7c5c4e22dd10c1a5b279b1e3'/>
<id>urn:sha1:108f92e376fd5f7c7c5c4e22dd10c1a5b279b1e3</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55674 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>If IV is used in a int-to-float cast inside the loop then try to eliminate the cast operation.</title>
<updated>2008-08-26T17:57:54Z</updated>
<author>
<name>Devang Patel</name>
<email>dpatel@apple.com</email>
</author>
<published>2008-08-26T17:57:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a0b3909d432e9f2c79aee8ec3133f9b9ec71dc1a'/>
<id>urn:sha1:a0b3909d432e9f2c79aee8ec3133f9b9ec71dc1a</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55374 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>XFAIL this test for now.</title>
<updated>2008-08-18T18:29:54Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2008-08-18T18:29:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=2dcca3a6d8d23b9ad3481e3a6a4d067a60c31ada'/>
<id>urn:sha1:2dcca3a6d8d23b9ad3481e3a6a4d067a60c31ada</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54929 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
