Dan Gohman
8cb8245cf1
Move a DenseMap's declaration outside of a loop, and just call
...
clear() on each iteration. This avoids allocating and deallocating
all of DenseMap's memory on each iteration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52642 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:15:00 +00:00
Dan Gohman
4b84086e89
Use StringMap instead of std::map<std::string, SDNode*>.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52641 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:08:32 +00:00
Dan Gohman
84701836bf
Add methods to StringMap to erase entries by key.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52640 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:07:03 +00:00
Evan Cheng
99ec779a93
Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52639 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:03:19 +00:00
Wojciech Matyjewicz
300c6c5167
First step to fix PR2088. Implement routine to compute the
...
multiplicative inverse of a given number. Modify udivrem to allow input and
output pairs of arguments to overlap. Patch is based on the work by Chandler
Carruth.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52638 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 19:39:50 +00:00
Dan Gohman
180c1691c7
Update the .cvs files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52637 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 18:43:26 +00:00
Dan Gohman
ebb5a971d9
Fix the types for NumElements variables, and add a comment
...
explaining why empty array constants use ValID::createUndef().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52636 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 18:40:28 +00:00
Owen Anderson
b70a571c99
Tighten the conditions under which we do PRE, remove some unneeded code, and correct our preserved analyses list, since we
...
do now change the CFG by splitting critical edges during PRE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52631 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 17:49:45 +00:00
Chris Lattner
2a6a645709
minor tidying of comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52630 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 17:11:23 +00:00
Dan Gohman
2f27e174a9
Remove two convenience constructors because they're now private, and the
...
private implementation doesn't really need the convenience.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52629 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 16:48:17 +00:00
Dan Gohman
7894ea75b5
Use std::copy instead of a loop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52628 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 16:45:24 +00:00
Dan Gohman
1a203571ca
More changes from Chris' review: simplify getIndices and avoid
...
copying its return value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52627 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 16:39:44 +00:00
Dan Gohman
19a81633b0
Remove an unnecessary cast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52626 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 16:38:10 +00:00
Dan Gohman
0a4627d71f
Duncan pointed out this code could be tidied.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52624 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 15:29:14 +00:00
Dan Gohman
52bb2db709
Fix the syntax of insertvalue in the example.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 15:26:37 +00:00
Duncan Sands
e9c80f4d57
Port some integer multiplication fixes from LegalizeDAG.
...
Bail out with an error if there is no libcall available
for the given size of integer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52622 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 15:15:44 +00:00
Duncan Sands
4a307ecce6
Support for expanding the result of EXTRACT_ELEMENT.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52621 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 15:08:15 +00:00
Duncan Sands
ab09b7e8f3
Cleanup up LegalizeTypes handling of loads and
...
stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52620 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 14:19:45 +00:00
Bill Wendling
04eeefb32a
Make test work on non-x86 machines (like my G4 PPC).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52619 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 06:16:31 +00:00
Owen Anderson
ae18bd4246
At Chris' suggestion, move the liveness and worklist datastructures into
...
instance variables so they can be allocated just once, and reuse the worklist
as the dead list as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52618 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 06:13:12 +00:00
Dan Gohman
cbfe5bbe88
Improve LSR's dead-phi detection to handle use-def cycles
...
with more than two nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52617 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 20:44:02 +00:00
Dan Gohman
9b78763fce
Use Loop::block_iterator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52616 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 20:18:58 +00:00
Dan Gohman
6c459a28ec
Generalize createSCEV to be able to form SCEV expressions from
...
ConstantExprs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52615 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 19:56:46 +00:00
Dan Gohman
17f1972c77
Use SCEVAddRecExpr::isAffine.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52614 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 19:23:09 +00:00
Dan Gohman
09d3fdc254
Remove unnecessary #includes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52613 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 19:21:26 +00:00
Dan Gohman
11f6d3b478
Move a few more SCEVExpander methods out-of-line.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52612 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 19:09:18 +00:00
Chris Lattner
963a97f1a3
Fix PR2369 by making scalarrepl more careful about promoting
...
structures. Its default threshold is to promote things that are
smaller than 128 bytes, which is sane. However, it is not sane
to do this for things that turn into 128 *registers*. Add a cap
on the number of registers introduced, defaulting to 128/4=32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52611 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 17:46:21 +00:00
Duncan Sands
69bfb15ecd
Make custom lowering of ADD work correctly. This
...
fixes PR2476; patch by Richard Osborne. The same
problem exists for a bunch of other operators, but
I'm ignoring this because they will be automagically
fixed when the new LegalizeTypes infrastructure lands,
since it already solves this problem centrally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52610 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-22 09:42:16 +00:00
Eli Friedman
5c1f172213
Fix for PR2479: correctly optimize expressions like (a > 13) & (a ==
...
15).
See also PR1800, which is about the signed case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52608 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 23:36:13 +00:00
Dan Gohman
1adec83ae8
Use Instruction::eraseFromParent().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:08:46 +00:00
Dan Gohman
4d515d0b09
Use Function's arg_size() and size() methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52605 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:06:54 +00:00
Dan Gohman
5686752099
Simplify some getNode calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52604 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:06:07 +00:00
Dan Gohman
2f1d3108e4
canClobberPhysRegDefs shouldn't called without checking hasPhysRegDefs;
...
check this with an assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52603 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:05:24 +00:00
Dan Gohman
95df6b3603
Avoid creating a redundant zero APInt.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52602 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:03:12 +00:00
Dan Gohman
317adcc9c6
Use clear() to zero an existing APInt.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52601 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:02:15 +00:00
Dan Gohman
719de53742
Use back() instead of [size()-1].
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52600 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:00:54 +00:00
Duncan Sands
befc9c16fa
This file is empty.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52596 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 20:26:50 +00:00
Duncan Sands
53ebe352ab
Turn off llvm-gcc warnings when running "make check".
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52595 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 20:22:58 +00:00
Dan Gohman
0011dc4738
Use MachineBasicBlock::transferSuccessors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52594 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 20:21:19 +00:00
Dan Gohman
933e51c5e3
Use static_cast instead of reinterpret_cast for casting void*.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52592 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 20:17:03 +00:00
Chris Lattner
629c1a3f78
Fix warning when assertions disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:49:01 +00:00
Chris Lattner
9d2c9bd113
fix warning when assertions disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52589 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:48:22 +00:00
Chris Lattner
48a0eec1da
fix warning when assertion disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52588 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:47:44 +00:00
Chris Lattner
a1aabe422f
fix some warnings when assertions are disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52587 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:47:03 +00:00
Dan Gohman
8d96144b0e
Remove a redundant return.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52585 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:34:57 +00:00
Dan Gohman
cdb7388233
Reorder some fields in SDNode. This avoids padding,
...
reducings its size from 80 to 72 on 64-bit hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52584 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:26:15 +00:00
Dan Gohman
94d7a5f815
Remove ScheduleDAG's SUnitMap altogether. Instead, use SDNode's NodeId
...
field, which is otherwise unused after instruction selection, as an index
into the SUnit array.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52583 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 19:18:17 +00:00
Dan Gohman
3627e34486
Add a priority queue class, which is a wrapper around std::priority_queue
...
and provides fairly efficient removal of arbitrary elements. Switch
ScheduleDAGRRList from std::set to this new priority queue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52582 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 18:35:25 +00:00
Duncan Sands
a1ace76c70
Support for load/store of expanded float types. I
...
don't know if a truncating store is possible here,
but added support for it anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52577 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 17:00:47 +00:00
Dan Gohman
4c8c83022b
Change ScheduleDAG's SUnitMap from DenseMap<SDNode*, vector<SUnit*> >
...
to DenseMap<SDNode*, SUnit*>, and adjust the way cloned SUnit nodes are
handled so that only the original node needs to be in the map.
This speeds up llc on 447.dealII.llvm.bc by about 2%.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52576 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 15:52:51 +00:00