Owen Anderson
59ed35b2c2
Cache subregister relationships in a set in TargetRegisterInfo to allow faster lookups.
...
This speeds up LiveVariables from 0.6279s to 0.6165s on kimwitu++.
llvm-svn: 52818
2008-06-27 06:56:04 +00:00
Chris Lattner
c94b39d65c
fix the regressions from Eric's patch by making GetConstantStringInfo
...
tolerate a non-nul-terminated string, and handling a direct global
reference.
llvm-svn: 52813
2008-06-27 03:36:51 +00:00
Bill Wendling
d19faaca94
More cruft from revert...
...
llvm-svn: 52809
2008-06-27 01:37:37 +00:00
Bill Wendling
e9909a1c2a
Reverting broken patch r52803.
...
llvm-svn: 52806
2008-06-27 01:27:56 +00:00
Bill Wendling
d0c2026584
- Remove a use of std::vector.
...
- Make sure that we're not recalculating the size of a vector
that never changes.
llvm-svn: 52803
2008-06-27 00:56:36 +00:00
Bill Wendling
2ab62b9a92
Refactor the DebugInfoDesc stuff out of the MachineModuleInfo file. Clean up
...
some uses of std::vector, where it's return std::vector by value. Yuck!
llvm-svn: 52800
2008-06-27 00:09:40 +00:00
Chris Lattner
865a98fba9
allow updating the MPM, so that you can use one FunctionPAssManager with
...
multiple ModuleProviders, e.g. with the JIT.
llvm-svn: 52796
2008-06-26 22:26:45 +00:00
Bill Wendling
36ebc296c1
Remove warnings about shadowed and unused variables.
...
llvm-svn: 52791
2008-06-26 18:11:45 +00:00
Owen Anderson
fd1b58fd7b
Use a DenseMap instead of an std::map for mangled name lookup. This is
...
improves AsmPrinter runtime on instcombine from 0.3920s to 0.3836s.
llvm-svn: 52787
2008-06-26 17:20:16 +00:00
Matthijs Kooijman
9b72ea4658
Add missing semicolumn in my last commit.
...
llvm-svn: 52780
2008-06-26 09:49:38 +00:00
Matthijs Kooijman
151654f100
Improve comments wrt createInternalize.
...
llvm-svn: 52779
2008-06-26 09:48:11 +00:00
Dale Johannesen
f170e29cf5
Fixes the last x86-64 test failure in compat.exp:
...
<16 x float> is 64-byte aligned (for some reason),
which gets us into the stack realignment code. The
computation changing FP-relative offsets to SP-relative
was broken, assiging a spill temp to a location
also used for parameter passing. This
fixes it by rounding up the stack frame to a multiple
of the largest alignment (I concluded it wasn't fixable
without doing this, but I'm not very sure.)
llvm-svn: 52750
2008-06-26 01:51:13 +00:00
Eric Christopher
4f05c48718
Move GetConstantStringInfo to lib/Analysis. Remove
...
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.
llvm-svn: 52748
2008-06-26 00:31:12 +00:00
Owen Anderson
68f11ecb86
Remember which MachineOperand we were processing, so we don't have to scan the list to find it again later.
...
This speeds up live intervals from 0.37s to 0.30s on instcombine.
llvm-svn: 52745
2008-06-25 23:39:39 +00:00
Duncan Sands
12c1bee452
Add support for expanding PPC 128 bit floats.
...
For this it is convenient to permit floats to
be used with EXTRACT_ELEMENT, so I tweaked
things to allow that. I also added libcalls
for ppcf128 to i32 forms of FP_TO_XINT, since
they exist in libgcc and this case can certainly
occur (and does occur in the testsuite) - before
the i64 libcall was being used. Also, the
XINT_TO_FP result seemed to be wrong when
the argument is an i128: the wrong fudge
factor was added (the i32 and i64 cases were
handled directly, but the i128 code fell
through to some generic softening code which
seemed to think it was i64 to f32!). So I
fixed it by adding a fudge factor that I
found in my breakfast cereal.
llvm-svn: 52739
2008-06-25 20:24:48 +00:00
Chris Lattner
ef1aa7c9db
Switch the PPC backend and target-independent JIT to use the libsystem
...
InvalidateInstructionCache method instead of calling through
a hook on the JIT. This is a host feature, not a target feature.
llvm-svn: 52734
2008-06-25 17:18:44 +00:00
Chris Lattner
24c59453f6
Add a new InvalidateInstructionCache method to sys::Memory.
...
llvm-svn: 52731
2008-06-25 17:14:10 +00:00
Dan Gohman
404964dbc0
Remove the OrigVT member from AtomicSDNode, as it is redundant with
...
the base SDNode's VTList.
llvm-svn: 52722
2008-06-25 16:07:49 +00:00
Mon P Wang
7d89d61387
Added MemOperands to Atomic operations since Atomics touches memory.
...
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706
2008-06-25 08:15:39 +00:00
Dan Gohman
7ee5cc0883
Make Allocate<T>() return a T* instead of a void*. And use
...
static_cast instead of reinterpret_cast.
llvm-svn: 52686
2008-06-24 17:49:26 +00:00
Dan Gohman
12c7695dcf
Correct a comment.
...
llvm-svn: 52683
2008-06-24 17:46:48 +00:00
Chris Lattner
7fdc625548
Add support for building on solaris, working around namespace
...
polution problems from system headers. Patch by Nathan Keynes!
llvm-svn: 52682
2008-06-24 17:44:42 +00:00
Dan Gohman
d1ec941698
Pass std::string by reference. Thanks Chris!
...
llvm-svn: 52678
2008-06-24 16:40:22 +00:00
Matthijs Kooijman
bb456f6b42
Rename a few variables to be more consistent.
...
llvm-svn: 52672
2008-06-24 09:14:10 +00:00
Owen Anderson
501d3ab521
Remove an incorrect comment.
...
llvm-svn: 52660
2008-06-24 00:15:10 +00:00
Owen Anderson
dffc50e90f
Use InstrSlots::NUM rather than pre-dividing by four. Also, mark this const.
...
llvm-svn: 52659
2008-06-24 00:08:35 +00:00
Dan Gohman
13e2ffe637
Comment fixes, and make Schedule() pure virtual.
...
llvm-svn: 52658
2008-06-24 00:02:44 +00:00
Dan Gohman
490250e7f2
Add a clear() method to PriorityQueue.
...
llvm-svn: 52656
2008-06-23 23:47:46 +00:00
Owen Anderson
df17544cd3
Add getScaledIntervalSize, which gives a measure of the size of an interval that is independent of the scaling of
...
the function due to empty index slots. This is suitable for use in backend heuristics that need to reason about the density
of an interval.
llvm-svn: 52652
2008-06-23 23:25:37 +00:00
Dan Gohman
512bf41c02
Simplify erase_one slightly. It's not necessary to preserve
...
the value of the element to be erased while the heap is
being updated.
llvm-svn: 52646
2008-06-23 21:46:21 +00:00
Dan Gohman
a989f4f916
Use StringMap instead of std::map<std::string, SDNode*>.
...
llvm-svn: 52641
2008-06-23 21:08:32 +00:00
Dan Gohman
54b67be86a
Add methods to StringMap to erase entries by key.
...
llvm-svn: 52640
2008-06-23 21:07:03 +00:00
Evan Cheng
6e5a126667
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.
...
llvm-svn: 52639
2008-06-23 21:03:19 +00:00
Wojciech Matyjewicz
1de28ac425
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.
llvm-svn: 52638
2008-06-23 19:39:50 +00:00
Dan Gohman
b52f318a0c
Remove two convenience constructors because they're now private, and the
...
private implementation doesn't really need the convenience.
llvm-svn: 52629
2008-06-23 16:48:17 +00:00
Dan Gohman
696e841b14
Remove an unnecessary cast.
...
llvm-svn: 52626
2008-06-23 16:38:10 +00:00
Dan Gohman
81c83d9a1d
Use SCEVAddRecExpr::isAffine.
...
llvm-svn: 52614
2008-06-22 19:23:09 +00:00
Dan Gohman
311865bd24
Move a few more SCEVExpander methods out-of-line.
...
llvm-svn: 52612
2008-06-22 19:09:18 +00:00
Dan Gohman
3ae70927cf
Reorder some fields in SDNode. This avoids padding,
...
reducings its size from 80 to 72 on 64-bit hosts.
llvm-svn: 52584
2008-06-21 19:26:15 +00:00
Dan Gohman
015a5ca374
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.
llvm-svn: 52583
2008-06-21 19:18:17 +00:00
Dan Gohman
4099d0bf27
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.
llvm-svn: 52582
2008-06-21 18:35:25 +00:00
Dan Gohman
3a5a96e045
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%.
llvm-svn: 52576
2008-06-21 15:52:51 +00:00
Evan Cheng
1d07cd32c2
Undo spill weight tweak. Need to investigate the performance regressions.
...
llvm-svn: 52572
2008-06-21 06:45:54 +00:00
Duncan Sands
57f1b4e23c
Add some methods for querying the nature of a
...
store, like the methods for loads (and neaten
those up a bit while there).
llvm-svn: 52547
2008-06-20 18:34:30 +00:00
Dan Gohman
f62b13bc3d
Add an allnodes_size method.
...
llvm-svn: 52541
2008-06-20 16:03:16 +00:00
Dan Gohman
d61d67b75c
It's invalid to take the one-past-the-end address of a non-array
...
object.
llvm-svn: 52515
2008-06-20 00:49:21 +00:00
Owen Anderson
5eeafbc3f7
Add an idx_iterator to the insertvalue and extractvalue instructions.
...
llvm-svn: 52493
2008-06-19 17:15:57 +00:00
Dan Gohman
42e4ecff62
The inline keyword goes before the return type. This fixes a compiler warning.
...
llvm-svn: 52492
2008-06-19 16:16:06 +00:00
Evan Cheng
968679913e
Minor spiller tweak to unfavor reload into load/store instructions.
...
llvm-svn: 52477
2008-06-19 01:16:17 +00:00
Dan Gohman
606a60ad68
Move SCEVExpander::visitAddExpr out-of-line.
...
llvm-svn: 52464
2008-06-18 16:37:11 +00:00