Nick Lewycky
bfa9499a88
Oops, remove assert that wasn't meant to be committed.
...
llvm-svn: 41170
2007-08-18 23:21:28 +00:00
Nick Lewycky
5b5b1ab9e0
Never insert duplicate edges.
...
llvm-svn: 41169
2007-08-18 23:18:03 +00:00
Nick Lewycky
20f0811fc0
Clean up comments, fix up some confusing code logic.
...
Predsimplify fails llvm-gcc bootstrap.
llvm-svn: 40815
2007-08-04 18:45:32 +00:00
Nick Lewycky
b7c0c8a350
Start adding and cleaning up comments.
...
llvm-svn: 39894
2007-07-16 02:58:37 +00:00
Nick Lewycky
39519f5c41
Use maximal intersection algorithm exclusively. Fixes miscompile bug.
...
llvm-svn: 39852
2007-07-14 04:28:04 +00:00
Nick Lewycky
e635cc43c6
Update the ValueRanges interface to use value numbers instead of Value*s.
...
llvm-svn: 38483
2007-07-10 03:28:21 +00:00
Nick Lewycky
73dd692173
Break "variable canonicalization" out of InequalityGraph and into its own class
...
"ValueNumbering".
llvm-svn: 37881
2007-07-05 03:15:00 +00:00
Nick Lewycky
8735f44104
Fix value ranges.
...
llvm-svn: 37713
2007-06-24 20:14:22 +00:00
Nick Lewycky
0f986fdbfa
Remove tabs.
...
llvm-svn: 37710
2007-06-24 04:40:16 +00:00
Nick Lewycky
26e25d340e
Remove use of ETForest. Also cleaned up issues around unreachable basic
...
blocks, and optimizing within one basic block.
llvm-svn: 37709
2007-06-24 04:36:20 +00:00
Bill Wendling
6357bf20fa
Patches by Chuck Rose to unbreak V Studio builds.
...
Thanks Chuck!
llvm-svn: 37428
2007-06-04 23:52:59 +00:00
Devang Patel
bdd1aaef10
s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g
...
llvm-svn: 37407
2007-06-04 00:32:22 +00:00
Devang Patel
0e8aa7b69a
s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g
...
llvm-svn: 37403
2007-06-03 06:26:14 +00:00
Nick Lewycky
e7da2d6ac3
Fix typo in comment.
...
llvm-svn: 36873
2007-05-06 13:37:16 +00:00
Devang Patel
8c78a0bff0
Drop 'const'
...
llvm-svn: 36662
2007-05-03 01:11:54 +00:00
Devang Patel
e95c6ad802
Use 'static const char' instead of 'static const int'.
...
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652
2007-05-02 21:39:20 +00:00
Devang Patel
09f162ca6a
Do not use typeinfo to identify pass in pass manager.
...
llvm-svn: 36632
2007-05-01 21:15:47 +00:00
Zhou Sheng
3178736d50
Using APInt more efficiently.
...
llvm-svn: 36475
2007-04-26 16:42:07 +00:00
Owen Anderson
510fefcd8a
Undo my previous changes. Since my approach to this problem is being revised,
...
this approach is no longer appropriate.
llvm-svn: 36421
2007-04-25 04:18:54 +00:00
Owen Anderson
64995e1b3f
Make PredicateSimplifier not use DominatorTree.
...
llvm-svn: 36300
2007-04-21 07:38:12 +00:00
Zhou Sheng
82fcf3cb5f
Make the operations of APInt variables more efficient.
...
llvm-svn: 36260
2007-04-19 05:35:00 +00:00
Chris Lattner
28d921d04f
fix long lines
...
llvm-svn: 36031
2007-04-14 23:32:02 +00:00
Nick Lewycky
d4f51a8ae3
Add support for cast instructions.
...
llvm-svn: 35734
2007-04-07 15:48:32 +00:00
Nick Lewycky
93f541057b
Support NE inequality in ValueRanges.
...
llvm-svn: 35724
2007-04-07 04:49:12 +00:00
Nick Lewycky
3bb6de85d1
Cleanup. Refactor out the applying of value ranges to its own method.
...
llvm-svn: 35719
2007-04-07 03:36:51 +00:00
Nick Lewycky
12d44abe0f
Use TargetData to find the size of a type.
...
llvm-svn: 35718
2007-04-07 03:16:12 +00:00
Nick Lewycky
eeb01b41ef
Strengthen icmp snuggling by doing 'compare-or-equal-to' to 'compare'
...
first and then range testing second.
llvm-svn: 35715
2007-04-07 02:30:14 +00:00
Nick Lewycky
b0da7ed9c8
Fix broken optimization disabled by a logic bug.
...
Analyze GEPs. If the indices are all zero, transfer whether the pointer is
known to be not null through the GEP.
Add a few more cases for xor and shift instructions.
llvm-svn: 35257
2007-03-22 02:02:51 +00:00
Nick Lewycky
db204ecfbc
Clean up this code and fix subtract miscompile.
...
llvm-svn: 35146
2007-03-18 22:58:46 +00:00
Nick Lewycky
17d20fd41e
Propagate ValueRanges across equality.
...
Add some more micro-optimizations: x * 0 = 0, a - x = a --> x = 0.
llvm-svn: 35138
2007-03-18 01:09:32 +00:00
Anton Korobeynikov
22f436da42
Silence warning
...
llvm-svn: 35137
2007-03-17 14:48:06 +00:00
Nick Lewycky
4f73de2b4e
Add more comments and update to new asm syntax.
...
Add new micro-optimizations.
Add icmp predicate snuggling. Given %x ULT 4, "icmp ugt %x, 2" becomes
"icmp eq %x, 3". This doesn't apply in any non-trivial cases yet due to missing
support for NE values in ValueRanges.
llvm-svn: 35119
2007-03-16 02:37:39 +00:00
Nick Lewycky
d9bd0bc3e2
Add value ranges. Currently inefficient in both execution time and
...
optimization power.
llvm-svn: 35058
2007-03-10 18:12:48 +00:00
Jeff Cohen
b622c11f77
Unbreak VC++ build.
...
llvm-svn: 34917
2007-03-05 00:00:42 +00:00
Nick Lewycky
db42295ff2
Translate bit operations to English.
...
llvm-svn: 34868
2007-03-03 03:14:40 +00:00
Reid Spencer
c34dedf686
APIntify this pass.
...
llvm-svn: 34863
2007-03-03 00:48:31 +00:00
Nick Lewycky
15245953a5
Fix indenting, remove tabs.
...
Learn from sext and zext. The destination value falls within the range of the
source type.
Generalize properties regarding constant ints.
Get smarter about marking blocks as unreachable. If 1 >= 2 in order for this
block to execute, then it isn't reachable.
llvm-svn: 33889
2007-02-04 23:43:05 +00:00
Reid Spencer
3f4e6e84dc
For PR1163:
...
Make the Module's dependent library use a std::vector instead of SetVector
adjust #includes in .cpp files because SetVector.h is no longer included.
llvm-svn: 33855
2007-02-04 00:40:42 +00:00
Nick Lewycky
56639800c9
Simplify names of lattice values. SGTUNE becomes SGT, for example.
...
Fix initializeConstant, now initializeInt. Fixes major performance
bottleneck.
X == Y || X->DominatedBy(Y) is redundant. Remove the X == Y part.
Fix crasher in makeEqual where getOrInsertNode would add a new constant,
producing an NE relationship between the two members we're trying to make
equal. This now allows us to mark more BBs as unreachable.
llvm-svn: 33612
2007-01-29 02:56:54 +00:00
Reid Spencer
a8a1547370
For PR1094:
...
Adjust the use of SetVector for changes in SetVector's interface.
Patch by Gordon Henriksen.
llvm-svn: 33280
2007-01-17 02:23:37 +00:00
Nick Lewycky
6ce36cff3a
Don't print address of ETNode. Print the DFSNumIn which uniquely identifies
...
the basic block and is stable across runs in gdb or valgrind.
Make Node::update handle edges which dominate and are tighter than
existing edges.
Replace makeEqual's "squeeze theorem" code. Fixes miscompilation.
Gate the calls to defToOps and opsToDef. Before this, we were getting IG
edges about values which weren't even defined in the dominated area. This
reduces the size of the IG by about half.
llvm-svn: 33236
2007-01-15 14:30:07 +00:00
Nick Lewycky
4294446fcb
"Default context" blocks can occur after a non-default one. This meant
...
that properties were being applied where they didn't belong. Fixes crash
in new MiBench testcase.
Also mark debugging code as such in #ifdef.
llvm-svn: 33177
2007-01-13 02:05:28 +00:00
Nick Lewycky
ee32ee0250
If we know that it's a constant being casted, propagate through the cast
...
instruction. Doesn't work the other way though (can't recover bits that
have been truncated).
llvm-svn: 33104
2007-01-12 01:23:53 +00:00
Nick Lewycky
4a74a75bbb
Clean up logic after ConstantBool removal.
...
llvm-svn: 33096
2007-01-12 00:02:12 +00:00
Reid Spencer
542964f55b
Rename BoolTy as Int1Ty. Patch by Sheng Zhou.
...
llvm-svn: 33076
2007-01-11 18:21:29 +00:00
Zhou Sheng
75b871fb1e
For PR1043:
...
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.
llvm-svn: 33073
2007-01-11 12:24:14 +00:00
Nick Lewycky
5d6ede524a
Quiet compiler warning. The only reason the function is marked virtual
...
is so that it can be called from inside a debugger.
llvm-svn: 33067
2007-01-11 02:38:21 +00:00
Nick Lewycky
2fc338f923
New predicate simplifier!
...
Please do not enable, there is still some known miscompile problem.
llvm-svn: 33066
2007-01-11 02:32:38 +00:00
Reid Spencer
266e42b312
For PR950:
...
This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.
llvm-svn: 32751
2006-12-23 06:05:41 +00:00
Chris Lattner
0e5255bdc6
Convert more Statistic's over to STATISTIC
...
llvm-svn: 32692
2006-12-19 21:49:03 +00:00