Owen Anderson
27876a3ff9
Eliminate a redundant check. This speeds up optimization of 253.perlbmk from 13.5 seconds to 10.9 seconds.
...
llvm-svn: 37683
2007-06-21 01:59:05 +00:00
Owen Anderson
fd5683ad7a
Comment-ize the functions in GVNPRE.
...
llvm-svn: 37681
2007-06-21 00:19:05 +00:00
Owen Anderson
06c1e585c9
Split runOnFunction into many smaller functions. This make it easier to get accurate performance analysis of GVNPRE.
...
llvm-svn: 37678
2007-06-20 22:10:02 +00:00
Owen Anderson
b0714bb7bb
Make GVNPRE accurate report whether it modified the function or not.
...
llvm-svn: 37673
2007-06-20 18:30:20 +00:00
Owen Anderson
7b0fb44ca9
Get rid of an unneeded helper function.
...
llvm-svn: 37670
2007-06-20 00:43:33 +00:00
Owen Anderson
1ad2c10215
Use a DenseMap instead of an std::map for the value numbering. This reduces the time to optimize lencod on a PPC Debug build from ~300s to ~140s.
...
llvm-svn: 37668
2007-06-19 23:23:54 +00:00
Owen Anderson
2320d430bd
Make dependsOnInvoke much more specific in what it tests, which in turn make it much faster to run. This reduces the time to optimize lencondwith a debug build on PPC from ~450s to ~300s.
...
llvm-svn: 37667
2007-06-19 23:07:16 +00:00
Owen Anderson
1370faf889
Handle constants in phi nodes properly. This fixes test/Transforms/GVNPRE/2007-06-18-ConstantInPhi.ll
...
llvm-svn: 37655
2007-06-19 07:35:36 +00:00
Owen Anderson
91c54950b3
Be careful to erase values from all of the appropriate sets when they're not needed anymore. This fixes a few more memory-related issues.
...
llvm-svn: 37647
2007-06-19 05:37:32 +00:00
Owen Anderson
b9cbaed623
Remember to clear the maximal sets between functions.
...
Thanks to Nicholas for valgrinding this.
llvm-svn: 37646
2007-06-19 04:32:55 +00:00
Owen Anderson
b56fba0c5a
Refactor GVNPRE to use a much smart method of uniquing value sets, and centralize a lot of the value numbering information. No functionality change.
...
llvm-svn: 37645
2007-06-19 03:31:41 +00:00
Owen Anderson
dd998e1913
Cache the results of dependsOnInvoke()
...
llvm-svn: 37622
2007-06-18 04:42:29 +00:00
Owen Anderson
f1c04e1ddb
Fix indentation.
...
llvm-svn: 37621
2007-06-18 04:31:21 +00:00
Owen Anderson
b364b413af
Don't perform an expensive check if it's not necessary.
...
llvm-svn: 37620
2007-06-18 04:30:44 +00:00
Owen Anderson
658f2c4881
Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all instructions that depend on invokes.
...
llvm-svn: 37610
2007-06-16 00:26:54 +00:00
Owen Anderson
acaed06827
Fix test/Transforms/GVNPRE/2007-06-15-Looping.ll
...
llvm-svn: 37595
2007-06-15 17:55:15 +00:00
Owen Anderson
4036ad485f
Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.ll
...
llvm-svn: 37564
2007-06-12 22:43:57 +00:00
Owen Anderson
4276984012
Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by being more careful when using
...
post-dominator information.
llvm-svn: 37556
2007-06-12 16:57:50 +00:00
Owen Anderson
a75dd4dc56
Fix a few more bugs, including an instance of walking in reverse topological rather than topological order. This
...
fixes a testcase extracted from llvm-test.
llvm-svn: 37550
2007-06-12 00:50:47 +00:00
Owen Anderson
d184c18074
Handle functions with multiple exit blocks properly.
...
llvm-svn: 37539
2007-06-11 16:25:17 +00:00
Owen Anderson
223718c40e
Perform PRE of comparison operators.
...
llvm-svn: 37536
2007-06-09 18:35:31 +00:00
Owen Anderson
7d76b2a774
Collect statistics from GVN-PRE.
...
llvm-svn: 37530
2007-06-08 22:02:36 +00:00
Owen Anderson
b232efaf48
Fix typo in a comment.
...
llvm-svn: 37526
2007-06-08 20:57:08 +00:00
Owen Anderson
55994f2453
Fix a bug that was causing the elimination phase not to replace values when it should be.
...
With this patch, GVN-PRE now correctly optimizes the example from the thesis.
Many thanks to Daniel Berlin for helping me find errors in this.
llvm-svn: 37525
2007-06-08 20:44:02 +00:00
Owen Anderson
2e5efc30c2
Small bugfix, and const-ify some methods (Thanks, Bill).
...
llvm-svn: 37513
2007-06-08 01:52:45 +00:00
Owen Anderson
be80240b29
Add partial redundancy elimination.
...
llvm-svn: 37510
2007-06-08 01:03:01 +00:00
Owen Anderson
634a063c1d
Add simple full redundancy elimination.
...
llvm-svn: 37455
2007-06-06 01:27:49 +00:00
Owen Anderson
ddbe430732
Fix a misunderstanding of the algorithm. Really, we should be tracking values
...
and expression separately. We can get around this, however, by only keeping
opaque values in TMP_GEN.
llvm-svn: 37443
2007-06-05 23:46:12 +00:00
Owen Anderson
c84720913a
Don't leak memory.
...
llvm-svn: 37442
2007-06-05 22:11:49 +00:00
Owen Anderson
9b89e4b561
Fix a small bug, some 80 cols violations, and add some more debugging output.
...
llvm-svn: 37436
2007-06-05 17:31:23 +00:00
Owen Anderson
3c9d8eef21
Don't use std::set_difference when the two sets are sorted differently. Compute
...
the difference manually instead.
This allows GVNPRE to produce correct analysis for the example in the GVNPRE
paper.
llvm-svn: 37425
2007-06-04 23:34:56 +00:00
Owen Anderson
3df5299f94
Fix a bunch of small bugs, and improve the debugging output significantly.
...
llvm-svn: 37424
2007-06-04 23:28:33 +00:00
Owen Anderson
38b6b22a41
Make phi_translate correct.
...
llvm-svn: 37418
2007-06-04 18:05:26 +00:00
Devang Patel
bdd1aaef10
s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g
...
llvm-svn: 37407
2007-06-04 00:32:22 +00:00
Owen Anderson
0eca9aad10
Don't use the custom comparator where it's not necessary.
...
llvm-svn: 37406
2007-06-03 22:02:14 +00:00
Devang Patel
0e8aa7b69a
s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g
...
llvm-svn: 37403
2007-06-03 06:26:14 +00:00
Owen Anderson
46499645db
Remove an unused method.
...
llvm-svn: 37402
2007-06-03 05:58:25 +00:00
Owen Anderson
0b68cda302
There's no need to have an Expression class... Value works just as well! This simplifies a lot of code.
...
llvm-svn: 37401
2007-06-03 05:55:58 +00:00
Owen Anderson
48e93f2ce9
clean() needs to process things in topological order.
...
llvm-svn: 37389
2007-06-01 22:00:37 +00:00
Owen Anderson
4c89142466
Fix Expression comparison, which in turn fixes a value numbering error.
...
llvm-svn: 37386
2007-06-01 17:34:47 +00:00
Owen Anderson
331bf6a959
Add a topological sort function.
...
llvm-svn: 37376
2007-05-31 22:44:11 +00:00
Owen Anderson
81d156e16f
Attempt to fix up phi_translate.
...
llvm-svn: 37366
2007-05-31 00:42:15 +00:00
Owen Anderson
4b0c1859fd
Fix a typo
...
llvm-svn: 37350
2007-05-29 23:34:14 +00:00
Owen Anderson
0c4230724c
Re-fix a bug, where I was now being too aggressive.
...
llvm-svn: 37348
2007-05-29 23:26:30 +00:00
Owen Anderson
4a6ec8fb57
Use proper debugging facilities so other people don't have to look at my commented-out
...
debugging lines.
llvm-svn: 37347
2007-05-29 23:15:21 +00:00
Owen Anderson
f11bdc7637
Comment debug code out that I accidentally uncommented last time.
...
llvm-svn: 37346
2007-05-29 22:43:03 +00:00
Owen Anderson
ac83a3e4ff
Add a place where I missed using the maximal set. Note that using the maximal
...
set this way is _SLOW_. Somewhere down the line, I'll look at speeding it up.
llvm-svn: 37345
2007-05-29 22:35:41 +00:00
Owen Anderson
5fba6c19b2
Very first part of a GVN-PRE implementation. It currently performs a bunch of analysis, and nothing more. It is also quite slow for the moment. However,
...
it should give a sense of what's going on.
llvm-svn: 37343
2007-05-29 21:53:49 +00:00