#
ae9d9f4d |
| 21-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Factor out code into HandleVirtRegDef, for consistency with Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check for register zero, and redundant checks for isPhysicalRegister.
llvm-svn: 56412
|
#
14738120 |
| 14-Aug-2008 |
Owen Anderson <resistor@mac.com> |
Use SmallSet instead of std::set to save allocations.
llvm-svn: 54810
|
#
a102290b |
| 04-Aug-2008 |
Owen Anderson <resistor@mac.com> |
- Fix SelectionDAG to generate correct CFGs. - Add a basic machine-level dead block eliminator.
These two have to go together, since many other parts of the code generator are unable to handle the u
- Fix SelectionDAG to generate correct CFGs. - Add a basic machine-level dead block eliminator.
These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.
llvm-svn: 54333
show more ...
|
#
7d98a48f |
| 03-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remov
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.
llvm-svn: 53097
show more ...
|
#
9f8b66f3 |
| 03-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
Use std::replace instead of std::find and push_back.
llvm-svn: 53063
|
#
7a265d83 |
| 03-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
- Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill mark
- Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers. - CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.
llvm-svn: 53061
show more ...
|
#
413f7d90 |
| 27-Jun-2008 |
Owen Anderson <resistor@mac.com> |
Use a SmallSet when we can to reduce memory allocations. This speeds up a particular testcase from 0.0302s to 0.0222s in LiveVariables.
llvm-svn: 52819
|
#
39b07db7 |
| 25-Jun-2008 |
Dan Gohman <gohman@apple.com> |
Fix the text in an assert string.
llvm-svn: 52744
|
#
c44659b9 |
| 23-Jun-2008 |
Bill Wendling <isanbard@gmail.com> |
This situation can occur:
,------. | | | v | t2 = phi ... t1 ... | | | v | t1 = ... | ... = ... t1 ... | | `------'
where there
This situation can occur:
,------. | | | v | t2 = phi ... t1 ... | | | v | t1 = ... | ... = ... t1 ... | | `------'
where there is a use in a PHI node that's a predecessor to the defining block. We don't want to mark all predecessors as having the value "alive" in this case. Also, the assert was too restrictive and didn't handle this case.
llvm-svn: 52655
show more ...
|
Revision tags: llvmorg-2.3.0 |
|
#
e45b8f89 |
| 16-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential
Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.
This patch also fixed a couple of nasty corner cases.
llvm-svn: 49784
show more ...
|
#
d8616064 |
| 02-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a phy
Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.
llvm-svn: 49105
show more ...
|
#
44c0b4f7 |
| 19-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix live variables issues: 1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register
Fix live variables issues: 1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue. 2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register: = EAX, AX<imp-use,kill> ... AX = In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things.
llvm-svn: 48521
show more ...
|
#
63254466 |
| 05-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Refactor code. Remove duplicated functions that basically do the same thing as findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927
|
#
15526b2e |
| 21-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Clear PhysRegPartUse for the sub register as well.
llvm-svn: 47453
|
#
eac9e5ef |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Remove one of the fixmes that I put in there. From Evan:
No need to go up more levels. A def of a register also sets its sub-registers (so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super
Remove one of the fixmes that I put in there. From Evan:
No need to go up more levels. A def of a register also sets its sub-registers (so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are not previously defined).
llvm-svn: 47399
show more ...
|
#
cf2d1aa4 |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Improve some comments explaining the "handle kills" stuff better.
llvm-svn: 47395
|
#
0b722196 |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Fix comment.
llvm-svn: 47389
|
#
b912351e |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Added some comments and reformatted others. No functionality change.
Added two "FIXMEs" for code that looks dubious to me (but I could be wrong).
llvm-svn: 47366
|
#
406fdbd3 |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
More constification of things. More comments added. No functionality changes. (Sorry for any formatting changes that creeped in.)
llvm-svn: 47362
|
#
59cc1595 |
| 20-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
No functionality change:
- Constified some MachineOperand values. - Added/Modified some comments.
llvm-svn: 47358
|
Revision tags: llvmorg-2.2.0 |
|
#
3a4be0fd |
| 10-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Rename MRegisterInfo to TargetRegisterInfo.
llvm-svn: 46930
|
#
8d78b059 |
| 05-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).
llvm-svn: 46763
|
#
2a8a4856 |
| 24-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.
llvm-svn: 46295
|
#
897aed91 |
| 15-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Move some calls to getVRegDef higher in the callgraph, so they don't get executed as frequently in performance sensitive code.
llvm-svn: 46027
|
#
1ba66e0c |
| 15-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.
llvm-svn: 46016
|