Reid Spencer
7eb55b395f
For PR950:
...
Replace the REM instruction with UREM, SREM and FREM.
llvm-svn: 31369
2006-11-02 01:53:59 +00:00
Reid Spencer
7e80b0b31e
For PR950:
...
Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.
llvm-svn: 31195
2006-10-26 06:15:43 +00:00
Nick Lewycky
5b979ae531
Fix 2006-10-25-AddSetCC. A relational operator (like setlt) can never
...
produce an EQ property.
llvm-svn: 31193
2006-10-26 02:35:18 +00:00
Nick Lewycky
9d17c82a26
Resurrect r1.25.
...
Fix and comment the "or", "and" and "xor" transformations.
llvm-svn: 31189
2006-10-25 23:48:24 +00:00
Chris Lattner
53f53db919
hide symbols properly
...
llvm-svn: 31184
2006-10-25 21:14:31 +00:00
Chris Lattner
dc7b9beb20
Revert back to r1.21, which was the last revision of predsimplify that
...
passes llvm-gcc bootstrap.
llvm-svn: 31146
2006-10-24 00:36:21 +00:00
Nick Lewycky
53b4158448
Remove the Backwards operation. Resolving now works at the time when a
...
property is added by running through the list of uses of the value and
adding resolved properties to the property set.
llvm-svn: 31126
2006-10-23 01:56:02 +00:00
Nick Lewycky
6f5c30fcec
Fix similar missing optimization opportunity in XOR.
...
llvm-svn: 31123
2006-10-22 22:22:58 +00:00
Nick Lewycky
af2b0571d0
Whoops! Add missing NULL check.
...
llvm-svn: 31121
2006-10-22 21:38:24 +00:00
Nick Lewycky
2c734f3fc1
Handle "if ((x|y) != 0)" for ints like we do for bools. Fixes missed
...
optimization opportunity pointed out by Chris Lattner.
llvm-svn: 31118
2006-10-22 21:36:41 +00:00
Nick Lewycky
f345008339
AllocaInst can't return a null pointer. Fixes missed optimization
...
opportunity pointed out by Andrew Lewycky.
llvm-svn: 31115
2006-10-22 19:53:27 +00:00
Nick Lewycky
77e030bca9
Replace custom dispatch code with two uses of InstVisitor. Improves
...
compile-time performance.
llvm-svn: 30896
2006-10-12 02:02:44 +00:00
Nick Lewycky
58a910dff5
Simplify logic further.
...
Ensure that we copy KnownProperties before calling visitBasicBlock, else
we may leak properties into blocks where they don't belong.
llvm-svn: 30705
2006-10-03 17:36:01 +00:00
Nick Lewycky
1d00f3e144
Simplify, now that predsimplify depends on break-crit-edges.
...
Fix SwitchInst where dest-block is the same as one of the cases.
llvm-svn: 30700
2006-10-03 15:19:11 +00:00
Nick Lewycky
755f801adc
Move break-crit-edges before the predicate simplifier. Allows us to
...
optimize in more cases.
llvm-svn: 30699
2006-10-03 14:52:23 +00:00
Chris Lattner
6ab03f6a08
Eliminate ConstantBool::True and ConstantBool::False. Instead, provide
...
ConstantBool::getTrue() and ConstantBool::getFalse().
llvm-svn: 30665
2006-09-28 23:35:22 +00:00
Nick Lewycky
059c79264f
Style changes only. Remove dead code, fix a comment.
...
llvm-svn: 30588
2006-09-23 15:13:08 +00:00
Nick Lewycky
fde9c308b2
Don't rewrite ConstantExpr::get.
...
llvm-svn: 30552
2006-09-21 01:05:35 +00:00
Nick Lewycky
d74c55f483
Once we're down to "setcc type constant1, constant2", at least come up
...
with the right answer.
llvm-svn: 30550
2006-09-20 23:02:24 +00:00
Nick Lewycky
cfff1c3f86
Use a total ordering to compare instructions.
...
Fixes infinite loop in resolve().
llvm-svn: 30540
2006-09-20 17:04:01 +00:00
Nick Lewycky
b9c5483a93
Walk down the dominator tree instead of the control flow graph. That means
...
that we can't modify the CFG any more, at least not until it's possible
to update the dominator tree (PR217).
llvm-svn: 30469
2006-09-18 21:09:35 +00:00
Nick Lewycky
12efffc96b
Add some more consistency checks.
...
llvm-svn: 30305
2006-09-13 19:32:53 +00:00
Nick Lewycky
51ce8d6b46
Fix unionSets so that it can merge correctly.
...
llvm-svn: 30304
2006-09-13 19:24:01 +00:00
Nick Lewycky
3a4dc7b489
Erase dead instructions.
...
llvm-svn: 30298
2006-09-13 18:55:37 +00:00
Nick Lewycky
e94f42a740
Skip the linear search if the answer is already known.
...
llvm-svn: 30251
2006-09-11 17:23:34 +00:00
Nick Lewycky
9a22d7b60f
Replace EquivalenceClasses with a custom-built data structure. Many common
...
operations (like findProperties) should be faster, at the expense of
unionSets being slower in cases that are rare in practise.
Don't erase a dead Instruction. This fixes a memory corruption issue.
llvm-svn: 30235
2006-09-10 02:27:07 +00:00
Nick Lewycky
8e5599354a
Improve handling of SelectInst.
...
Reorder operations to remove duplicated work.
Fix to leave floating-point types out of the optimization.
Add tests to predsimplify.ll for SwitchInst and SelectInst handling.
llvm-svn: 30055
2006-09-02 19:40:38 +00:00
Nick Lewycky
f6f529d008
Don't confuse canonicalize and lookup. Fixes predsimplify.reg4.ll. Also
...
corrects missing optimization opportunity removing cases from a switch.
llvm-svn: 30009
2006-09-01 03:26:35 +00:00
Nick Lewycky
08674ab707
Properties where both Values weren't in the union (as being equal to
...
another Value) weren't being found by findProperties.
This fixes predsimplify.ll test6, a missed optimization opportunity.
llvm-svn: 29991
2006-08-31 00:39:16 +00:00
Nick Lewycky
5f8f9af65c
Move to using the EquivalenceClass ADT. Removes SynSets.
...
If a branch's condition has become a ConstantBool, simplify it immediately.
Removing the edge saves work and exposes up more optimization opportunities
in the pass.
Add support for SelectInst.
llvm-svn: 29970
2006-08-30 02:46:48 +00:00
Nick Lewycky
b2e8ae1700
Add PredicateSimplifier pass. Collapses equal variables into one form
...
and simplifies expressions. This implements the optimization described
in PR807.
llvm-svn: 29947
2006-08-28 22:44:55 +00:00