<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/lib/Transforms/Utils, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/lib/Transforms/Utils?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/lib/Transforms/Utils?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-03-22T20:31:05Z</updated>
<entry>
<title>Add all clauses when merging the landing pads. Duplicates will be handled later on.</title>
<updated>2013-03-22T20:31:05Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-22T20:31:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=4c6250247053810d44119d2e34eb4f07ba56d035'/>
<id>urn:sha1:4c6250247053810d44119d2e34eb4f07ba56d035</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177757 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Don't use the removed API.</title>
<updated>2013-03-22T18:49:53Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-22T18:49:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=63da4062e4ef85fd64a6f5681e61e4bba4c4a076'/>
<id>urn:sha1:63da4062e4ef85fd64a6f5681e61e4bba4c4a076</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177749 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fix llvm::removeUnreachableBlocks to handle unreachable loops.</title>
<updated>2013-03-22T08:43:04Z</updated>
<author>
<name>Evgeniy Stepanov</name>
<email>eugeni.stepanov@gmail.com</email>
</author>
<published>2013-03-22T08:43:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7541cd36fdd1bd044e22497838faac7b8f7e48cd'/>
<id>urn:sha1:7541cd36fdd1bd044e22497838faac7b8f7e48cd</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177713 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Always forward 'resume' instructions to the outter landing pad.</title>
<updated>2013-03-21T23:30:12Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-21T23:30:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d9ff8c83d137586d8c06f98bdf8adbf0d1fa79ca'/>
<id>urn:sha1:d9ff8c83d137586d8c06f98bdf8adbf0d1fa79ca</id>
<content type='text'>
How did this ever work?

Basically, if you have a function that's inlined into the caller, it may not
have any 'call' instructions, but any 'resume' instructions it may have should
still be forwarded to the outer (caller's) landing pad. This requires that all
of the 'landingpad' instructions in the callee have their clauses merged with
the caller's outer 'landingpad' instruction (hence the bit of ugly code in the
`forwardResume' method).

Testcase in a follow commit to the test-suite repository.

&lt;rdar://problem/13360379&gt; &amp; PR15555


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177680 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LibCallSimplifier: optimize speed for short-lived instances</title>
<updated>2013-03-12T00:08:29Z</updated>
<author>
<name>Meador Inge</name>
<email>meadori@codesourcery.com</email>
</author>
<published>2013-03-12T00:08:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=67cb638629c69ab8c896175f58b4f472de5988d9'/>
<id>urn:sha1:67cb638629c69ab8c896175f58b4f472de5988d9</id>
<content type='text'>
Nadav reported a performance regression due to the work I did to
merge the library call simplifier into instcombine [1].  The issue
is that a new LibCallSimplifier object is being created whenever
InstCombiner::runOnFunction is called.  Every time a LibCallSimplifier
object is used to optimize a call it creates a hash table to map from
a function name to an object that optimizes functions of that name.
For short-lived LibCallSimplifier instances this is quite inefficient.
Especially for cases where no calls are actually simplified.

This patch fixes the issue by dropping the hash table and implementing
an explicit lookup function to correlate the function name to the object
that optimizes functions of that name.  This avoids the cost of always
building and destroying the hash table in cases where the LibCallSimplifier
object is short-lived and avoids the cost of building the table when no
simplifications are actually preformed.

On a benchmark containing 100,000 calls where none of them are simplified
I noticed a 30% speedup.  On a benchmark containing 100,000 calls where
all of them are simplified I noticed an 8% speedup.

[1] http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130304/167639.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176840 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Don't remove a landing pad if the invoke requires a table entry.</title>
<updated>2013-03-11T20:53:00Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-11T20:53:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d5bb20805e03cff03bfa3f85f189cbc8fb4a769a'/>
<id>urn:sha1:d5bb20805e03cff03bfa3f85f189cbc8fb4a769a</id>
<content type='text'>
An invoke may require a table entry. For instance, when the function it calls
is expected to throw.
&lt;rdar://problem/13360379&gt;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176827 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Fixed a crash when cloning a function into a function with</title>
<updated>2013-03-07T16:46:43Z</updated>
<author>
<name>Pekka Jaaskelainen</name>
<email>pekka.jaaskelainen@tut.fi</email>
</author>
<published>2013-03-07T16:46:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=784ae47413e1adf3b64ed5546f88b39ab52a9281'/>
<id>urn:sha1:784ae47413e1adf3b64ed5546f88b39ab52a9281</id>
<content type='text'>
different size argument list and without attributes in the
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176632 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>SimplifyCFG fix for volatile load/store.</title>
<updated>2013-03-07T01:03:35Z</updated>
<author>
<name>Andrew Trick</name>
<email>atrick@apple.com</email>
</author>
<published>2013-03-07T01:03:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=119003f2a22ee7c4f78fed5710f98edb36b237b5'/>
<id>urn:sha1:119003f2a22ee7c4f78fed5710f98edb36b237b5</id>
<content type='text'>
Fixes rdar:13349374.

Volatile loads and stores need to be preserved even if the language
standard says they are undefined. "volatile" in this context means "get
out of the way compiler, let my platform handle it".

Additionally, this is the only way I know of with llvm to write to the
first page (when hardware allows) without dropping to assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176599 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Bypass Slow Divides</title>
<updated>2013-03-04T18:13:57Z</updated>
<author>
<name>Preston Gurd</name>
<email>preston.gurd@intel.com</email>
</author>
<published>2013-03-04T18:13:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=9a2cfffdb6340c54ff553c1b81364d0f17fa8f45'/>
<id>urn:sha1:9a2cfffdb6340c54ff553c1b81364d0f17fa8f45</id>
<content type='text'>
* Only apply divide bypass optimization when not optimizing for size. 
* Fixed bug caused by constant for 0 value of type Int32,
  used dividend type to generate the constant instead.
* For atom x86-64 apply the divide bypass to use 16-bit divides instead of
  64-bit divides when operand values are small enough.
* Added lit tests for 64-bit divide bypass.

Patch by Tyler Nowicki!




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176442 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Modify {Call,Invoke}Inst::addAttribute to take an AttrKind.</title>
<updated>2013-03-02T01:20:18Z</updated>
<author>
<name>Peter Collingbourne</name>
<email>peter@pcc.me.uk</email>
</author>
<published>2013-03-02T01:20:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=328d1b65002e68ae65ffef05eed19122cbf721f5'/>
<id>urn:sha1:328d1b65002e68ae65ffef05eed19122cbf721f5</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176397 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
