Brian Gaeke
3707241f31
Add pred./succ. list size methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13214 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-28 04:46:35 +00:00
Brian Gaeke
8560af4f5f
Move private methods to end of class decl at Chris's request
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13210 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-28 04:15:06 +00:00
Brian Gaeke
61d3d5c06b
Fix thinkos that Chris caught for me.
...
Make pred mutators private.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13209 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-28 03:59:48 +00:00
Brian Gaeke
76456bc40c
Add machine-code CFG support: MachineBasicBlocks may now have their own
...
predecessors and successors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13208 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-28 02:16:33 +00:00
Brian Gaeke
fd1bb8b974
Add emitWordAt() - a quick and dirty interface that the machine-dependent
...
emitters can use to emit "relocations".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13116 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-23 17:11:12 +00:00
Brian Gaeke
5a509c8225
Include <string> for compatibility with gcc 3.0.x (the system compiler on
...
Debian.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12985 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-16 15:57:14 +00:00
Alkis Evlogimenos
9a8b490735
Add definition list to each live interval.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12791 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-09 18:07:57 +00:00
Brian Gaeke
92eaec932c
This file does not appear to be included anywhere.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12777 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-08 19:36:26 +00:00
Brian Gaeke
c326c92ca8
This file is no longer used.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12767 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-07 21:01:22 +00:00
Chris Lattner
024e91f6f6
Allow converting a builder to an iterator
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12586 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-01 04:03:10 +00:00
Brian Gaeke
da44b15125
Add clear() forwarding method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12580 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-31 22:43:12 +00:00
Chris Lattner
83706a5a3a
MachineBasicBlock::remove should not change the iterator passed into it
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12569 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-31 21:58:50 +00:00
Alkis Evlogimenos
9cccb8aec7
Fix bug introduced by yesterday's changes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12119 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-04 18:02:07 +00:00
Brian Gaeke
c54839573c
Make MachineOperand's value named 'contents'. Make really, really sure
...
it is always completely initialized and copied.
Also, fix up many comments and asserts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12100 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-03 19:07:27 +00:00
Alkis Evlogimenos
5f37502bfb
Add the long awaited memory operand folding support for linear scan
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12058 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-01 20:05:10 +00:00
Chris Lattner
a523cdf1b6
Remove public header. It's been moved to lib/Target/SparcV9
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-29 19:13:20 +00:00
Chris Lattner
e85f2348c9
Do not use explicit casts that hide the dependence on Instruction being
...
annotable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12000 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-29 19:02:26 +00:00
Chris Lattner
7598a1a9a8
Remove unneeded #include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11978 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-29 05:15:56 +00:00
Chris Lattner
6a8a9b4413
Continue Alkis's int64_t cleanup. This makes all of the immediate related
...
methods take an int or unsigned value instead of int64_t.
Also, add an 'addImm' method to the MachineInstrBuilder class, because the
fact that the hardware sign or zero extends it does not/should not matter
to the code generator. Once the old sparc backend is removed the difference
can be eliminated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11976 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-29 05:06:49 +00:00
Chris Lattner
c3c106ca59
Add BuildMI variants that take a MBB::iterator
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11975 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-29 04:55:28 +00:00
Alkis Evlogimenos
bd16ef84bf
Make MachineOperand's immediate value an int and save 4 bytes out of
...
each MachineOperand. We don't really need an int64_t immediate :-).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11906 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-27 15:05:28 +00:00
Alkis Evlogimenos
4d0d864be3
Add DenseMap template and actually use it for for mapping virtual regs
...
to objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11840 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-25 21:55:45 +00:00
Brian Gaeke
748fba141f
FunctionLiveVarInfo.h moved: include/llvm/CodeGen -> lib/Target/Sparc/LiveVar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11804 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-24 19:46:00 +00:00
Alkis Evlogimenos
743d0a1f83
Refactor rewinding code for finding the first terminator of a basic
...
block into MachineBasicBlock::getFirstTerminator().
This also fixes a bug in the implementation of the above in both
RegAllocLocal and InstrSched, where instructions where added after the
terminator if the basic block's only instruction was a terminator (it
shouldn't matter for RegAllocLocal since this case never occurs in
practice).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11748 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-23 18:14:48 +00:00
Alkis Evlogimenos
a2f6a408dc
Move LiveIntervals.h to lib/CodeGen since it shouldn't be exposed to other parts of the compiler
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11719 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-23 00:50:15 +00:00
Alkis Evlogimenos
890f92328d
Move MOTy::UseType enum into MachineOperand. This eliminates the
...
switch statements in the constructors and simplifies the
implementation of the getUseType() member function. You will have to
specify defs using MachineOperand::Def instead of MOTy::Def though
(similarly for Use and UseAndDef).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11715 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22 19:23:26 +00:00
Alkis Evlogimenos
e33da36cbd
Fix silly bug in implementation of getUseType(). Thanks Misha.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11711 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22 07:24:19 +00:00
Alkis Evlogimenos
f216421181
When folding memory operands in machine instructions be careful to
...
leave register operands with the same use/def flags as the original
instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11709 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22 06:54:26 +00:00
Alkis Evlogimenos
7200c6b82a
Abstract merging of ranges away from number of slots per instruction.
...
Also make it less aggressive as the current implementation breaks in
some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11696 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-22 04:05:13 +00:00
Alkis Evlogimenos
39a0d5c112
Too many changes in one commit:
...
1. LiveIntervals now implement a 4 slot per instruction model. Load,
Use, Def and a Store slot. This is required in order to correctly
represent caller saved register clobbering on function calls,
register reuse in the same instruction (def resues last use) and
also spill code added later by the allocator. The previous
representation (2 slots per instruction) was insufficient and as a
result was causing subtle bugs.
2. Fixes in spill code generation. This was the major cause of
failures in the test suite.
3. Linear scan now has core support for folding memory operands. This
is untested and not enabled (the live interval update function does
not attempt to fold loads/stores in instructions).
4. Lots of improvements in the debugging output of both live intervals
and linear scan. Give it a try... it is beautiful :-)
In summary the above fixes all the issues with the recent reserved
register elimination changes and get the allocator very close to the
next big step: folding memory operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11654 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-20 06:15:40 +00:00
Chris Lattner
da8ab2ea45
ADd a method for when an instruction moves
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11626 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-19 18:28:22 +00:00
Chris Lattner
5e61fa9519
Add a MachineBasicBlock::getParent() method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11622 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-19 16:13:54 +00:00
Alkis Evlogimenos
52f8f56ef4
Move unused typedefs in private section. Add method to return interval
...
given a register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11608 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-18 23:14:52 +00:00
Chris Lattner
9b2c31c5cb
eliminate a pair of really inefficient methods now that noone uses them
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11579 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-18 16:45:22 +00:00
Alkis Evlogimenos
7093d37304
Add LiveIntervals::Interval::empty() member function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11520 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17 05:14:37 +00:00
Alkis Evlogimenos
aad5c05051
Add LeakDetection to MachineInstr.
...
Move out of line member functions of MachineBasicBlock to
MachineBasicBlock.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11497 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-16 07:17:43 +00:00
Alkis Evlogimenos
843b160a20
Eliminate the use of spill (reserved) registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11476 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-15 10:24:21 +00:00
Chris Lattner
46ccf6d382
finegrainify namespacification
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11469 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-15 05:52:36 +00:00
Alkis Evlogimenos
be766c7246
Remove getAllocatedRegNum(). Use getReg() instead.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13 21:01:20 +00:00
Alkis Evlogimenos
903b22cd51
Mark MachineBasicBlock::operator[] deprecated.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11392 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13 20:05:56 +00:00
Alkis Evlogimenos
87af94b291
Add getNumVirtualRegs().
...
Whitespace cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11388 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13 18:07:06 +00:00
Brian Gaeke
f13a3f4dd1
Include <iosfwd>.
...
Add prototypes for MachineBasicBlock's dump() and print() methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11365 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-13 04:40:15 +00:00
Alkis Evlogimenos
94dc07728f
Move ilist_trairs<MachineInstr> in MachineBasicBlock.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11358 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 19:12:03 +00:00
Alkis Evlogimenos
ab8672c8bb
Add parent pointer to MachineInstr that points to owning
...
MachineBasicBlock. Also change opcode to a short and numImplicitRefs
to an unsigned char so that overall MachineInstr's size stays the
same.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11357 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 18:49:07 +00:00
Chris Lattner
2a90ba6017
Rename the opCode instance variable to Opcode
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11348 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 16:09:53 +00:00
Chris Lattner
9fc77d1358
Remove a dead field from MachineInstr!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11347 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 16:05:03 +00:00
Brian Gaeke
0eda78a372
Add one more doxygen comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11344 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 04:26:49 +00:00
Brian Gaeke
56aa531f93
Express one of MachineOperand's many constructors in terms of another, by means of default arguments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11343 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 04:15:00 +00:00
Brian Gaeke
2d58f0691e
Remove these MachineOpCodeFlags and their accessor - they are never set.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11341 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 04:00:55 +00:00
Alkis Evlogimenos
c0b9dc5be7
Change MachineBasicBlock's vector of MachineInstr pointers into an
...
ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11340 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-12 02:27:10 +00:00