<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/lib/Transforms/Utils, branch release_31</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/lib/Transforms/Utils?h=release_31</id>
<link rel='self' href='https://git.amat.us/llvm/atom/lib/Transforms/Utils?h=release_31'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2012-04-30T17:58:59Z</updated>
<entry>
<title>Rename to match coding conventions.</title>
<updated>2012-04-30T17:58:59Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2012-04-30T17:58:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=c70ebff18a5cbb863576a525ba3a5fe0cf9216a4'/>
<id>urn:sha1:c70ebff18a5cbb863576a525ba3a5fe0cf9216a4</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_31@155834 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Merging r155817:</title>
<updated>2012-04-30T17:48:14Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2012-04-30T17:48:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=458cf3ee70dea5a733a5b16286c5d7eb98a108d3'/>
<id>urn:sha1:458cf3ee70dea5a733a5b16286c5d7eb98a108d3</id>
<content type='text'>
------------------------------------------------------------------------
r155817 | void | 2012-04-30 03:44:54 -0700 (Mon, 30 Apr 2012) | 9 lines

Second attempt at PR12573:

Allow the "SplitCriticalEdge" function to split the edge to a landing pad. If
the pass is *sure* that it thinks it knows what it's doing, then it may go ahead
and specify that the landing pad can have its critical edge split. The loop
unswitch pass is one of these passes. It will split the critical edges of all
edges coming from a loop to a landing pad not within the loop. Doing so will
retain important loop analysis information, such as loop simplify.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_31@155833 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix 12513: Loop unrolling breaks with indirect branches.</title>
<updated>2012-04-10T05:14:42Z</updated>
<author>
<name>Andrew Trick</name>
<email>atrick@apple.com</email>
</author>
<published>2012-04-10T05:14:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d9fc1ce8096f7138c60edc3a6655583bf209780e'/>
<id>urn:sha1:d9fc1ce8096f7138c60edc3a6655583bf209780e</id>
<content type='text'>
Take this opportunity to generalize the indirectbr bailout logic for
loop transformations. CFG transformations will never get indirectbr
right, and there's no point trying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154386 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Sink the collection of return instructions until after *all*</title>
<updated>2012-04-06T17:21:31Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2012-04-06T17:21:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=9ceebb7e92e980340d199b550e3a2110c80ea871'/>
<id>urn:sha1:9ceebb7e92e980340d199b550e3a2110c80ea871</id>
<content type='text'>
simplification has been performed. This is a bit less efficient
(requires another ilist walk of the basic blocks) but shouldn't matter
in practice. More importantly, it's just too much work to keep track of
all the various ways the return instructions can be mutated while
simplifying them. This fixes yet another crasher, reported by Daniel
Dunbar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154179 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Sink the return instruction collection until after we're done deleting</title>
<updated>2012-04-06T01:11:52Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2012-04-06T01:11:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=6bbab86af959a8819ddadfe8909bcfa5aa53ce9f'/>
<id>urn:sha1:6bbab86af959a8819ddadfe8909bcfa5aa53ce9f</id>
<content type='text'>
dead code, including dead return instructions in some cases. Otherwise,
we end up having a bogus poniter to a return instruction that blows up
much further down the road.

It turns out that this pattern is both simpler to code, easier to update
in the face of enhancements to the inliner cleanup, and likely cheaper
given that it won't add dead instructions to the list.

Thanks to John Regehr's numerous test cases for teasing this out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154157 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Always compute all the bits in ComputeMaskedBits.</title>
<updated>2012-04-04T12:51:34Z</updated>
<author>
<name>Rafael Espindola</name>
<email>rafael.espindola@gmail.com</email>
</author>
<published>2012-04-04T12:51:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=26c8dcc692fb2addd475446cfff24d6a4e958bca'/>
<id>urn:sha1:26c8dcc692fb2addd475446cfff24d6a4e958bca</id>
<content type='text'>
This allows us to keep passing reduced masks to SimplifyDemandedBits, but
know about all the bits if SimplifyDemandedBits fails. This allows instcombine
to simplify cases like the one in the included testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154011 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Switch to WeakVHs in the value mapper, and aggressively prune dead basic</title>
<updated>2012-03-28T08:38:27Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2012-03-28T08:38:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=afff33001a4fd3049d97cb40eea459d5c87ae5cc'/>
<id>urn:sha1:afff33001a4fd3049d97cb40eea459d5c87ae5cc</id>
<content type='text'>
blocks in the function cloner. This removes the last case of trivially
dead code that I've been seeing in the wild getting inlined, analyzed,
re-inlined, optimized, only to be deleted. Nukes a FIXME from the
cleanup tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153572 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Tidy.</title>
<updated>2012-03-26T19:09:40Z</updated>
<author>
<name>Eric Christopher</name>
<email>echristo@apple.com</email>
</author>
<published>2012-03-26T19:09:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7d8eb711e4608dcca9366141be22941af8d1eff8'/>
<id>urn:sha1:7d8eb711e4608dcca9366141be22941af8d1eff8</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153456 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Tidy.</title>
<updated>2012-03-26T19:09:38Z</updated>
<author>
<name>Eric Christopher</name>
<email>echristo@apple.com</email>
</author>
<published>2012-03-26T19:09:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=373c2d37072026e82f9b307eb40cf12baafd5f93'/>
<id>urn:sha1:373c2d37072026e82f9b307eb40cf12baafd5f93</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153455 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Teach the function cloner (and thus the inliner) to simplify PHINodes</title>
<updated>2012-03-25T10:34:54Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2012-03-25T10:34:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f8c8a9cbb40972b07432d6b25d1a351556485b1e'/>
<id>urn:sha1:f8c8a9cbb40972b07432d6b25d1a351556485b1e</id>
<content type='text'>
aggressively. There are lots of dire warnings about this being expensive
that seem to predate switching to the TrackingVH-based value remapper
that is automatically updated on RAUW. This makes it easy to not just
prune single-entry PHIs, but to fully simplify PHIs, and to recursively
simplify the newly inlined code to propagate PHINode simplifications.

This introduces a bit of a thorny problem though. We may end up
simplifying a branch condition to a constant when we fold PHINodes, and
we would like to nuke any dead blocks resulting from this so that time
isn't wasted continually analyzing them, but this isn't easy. Deleting
basic blocks *after* they are fully cloned and mapped into the new
function currently requires manually updating the value map. The last
piece of the simplification-during-inlining puzzle will require either
switching to WeakVH mappings or some other piece of refactoring. I've
left a FIXME in the testcase about this.

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