aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remember which MachineOperand we were processing, so we don't have to scan ↵Owen Anderson2008-06-251-11/+15
| | | | | | | | | the list to find it again later. This speeds up live intervals from 0.37s to 0.30s on instcombine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52745 91177308-0d34-0410-b5e6-96231b3b80d8
* Undo spill weight tweak. Need to investigate the performance regressions.Evan Cheng2008-06-211-8/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52572 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert my last patch, which was causing regression test failures.Owen Anderson2008-06-191-78/+69
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52485 91177308-0d34-0410-b5e6-96231b3b80d8
* Minor spiller tweak to unfavor reload into load/store instructions.Evan Cheng2008-06-191-4/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52477 91177308-0d34-0410-b5e6-96231b3b80d8
* Insert empty slots into the instruction numbering in live intervals, so that ↵Owen Anderson2008-06-191-69/+78
| | | | | | | | | we can more easily add new instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52475 91177308-0d34-0410-b5e6-96231b3b80d8
* Live-through live interval is [mbb start, mbb end+1].Evan Cheng2008-06-171-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52431 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove special case handling of empty MBBs now that we assign indices to them.Owen Anderson2008-06-161-8/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52345 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-enable empty block indexing by default, since it doesn't seem to have anyOwen Anderson2008-06-161-21/+9
| | | | | | | impact on code quality or compile time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52329 91177308-0d34-0410-b5e6-96231b3b80d8
* Make indexing empty basic blocks an option for the moment.Owen Anderson2008-06-161-9/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52306 91177308-0d34-0410-b5e6-96231b3b80d8
* Assign indices to empty basic blocks. This will be necessary for ↵Owen Anderson2008-06-161-4/+9
| | | | | | StrongPHIElimination in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52300 91177308-0d34-0410-b5e6-96231b3b80d8
* Refine stack slot interval weight computation.Evan Cheng2008-06-061-15/+45
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52040 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a helper for constructing new live ranges that ended from an instruction ↵Owen Anderson2008-06-051-0/+15
| | | | | | to the end of its MBB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52012 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a stack slot coloring pass. Not yet enabled.Evan Cheng2008-06-041-14/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51934 91177308-0d34-0410-b5e6-96231b3b80d8
* Correctly handle removed instructions at the beginning of MBBs when renumbering.Owen Anderson2008-06-021-12/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51876 91177308-0d34-0410-b5e6-96231b3b80d8
* Make the renumbering correct in the face of deleted instructions that have ↵Owen Anderson2008-05-291-7/+73
| | | | | | been removed from the LiveIntervals maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51714 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove <iostream>.Bill Wendling2008-05-291-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51704 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert part of my last patch that I didn't intend to commit yet.Owen Anderson2008-05-291-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51694 91177308-0d34-0410-b5e6-96231b3b80d8
* Renumbering needs to account for instruction slot offsets when performing ↵Owen Anderson2008-05-291-7/+20
| | | | | | lookups in the index maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51691 91177308-0d34-0410-b5e6-96231b3b80d8
* Remap VNInfo data as well when doing renumbering.Owen Anderson2008-05-281-0/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51658 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor the numbering computation into a separate method, and add the ↵Owen Anderson2008-05-281-11/+29
| | | | | | slightest attempt at some renumbering logic, which is currently unused. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51652 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert 51440 as it breaks a bunch of PIC tests.Evan Cheng2008-05-231-3/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51513 91177308-0d34-0410-b5e6-96231b3b80d8
* When rewriting defs and uses after spilling, don't set the weight of aDavid Greene2008-05-221-1/+3
| | | | | | | | | live interval to infinity if the instruction being rewritten is an original remat def instruction. We were only checking against the clone of the remat def which doesn't actually appear in the IR at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51440 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't spill dead def.Evan Cheng2008-05-201-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51305 91177308-0d34-0410-b5e6-96231b3b80d8
* Clean up the use of static and anonymous namespaces. This turned upDan Gohman2008-05-131-27/+25
| | | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
* Make several variable declarations static.Dan Gohman2008-05-061-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50696 91177308-0d34-0410-b5e6-96231b3b80d8
* Empty basic block should have an empty range.Evan Cheng2008-04-161-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49800 91177308-0d34-0410-b5e6-96231b3b80d8
* Use of implicit_def is not part of live interval. Create empty intervals for ↵Evan Cheng2008-04-111-12/+30
| | | | | | the uses when the live interval is being spilled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49542 91177308-0d34-0410-b5e6-96231b3b80d8
* - More aggressively coalescing away copies whose source is defined by an ↵Evan Cheng2008-04-091-2/+9
| | | | | | | | | implicit_def. - Added insert_subreg coalescing support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
* - Treat a live range defined by an implicit_def as a zero-sized one.Evan Cheng2008-04-031-2/+28
| | | | | | | - Eliminate an implicit_def when it's being spilled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49166 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-materialization is for uses only.Evan Cheng2008-04-011-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49053 91177308-0d34-0410-b5e6-96231b3b80d8
* It's not safe to fold a load from GV stub or constantpool into a two-address ↵Evan Cheng2008-03-311-2/+3
| | | | | | use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002 91177308-0d34-0410-b5e6-96231b3b80d8
* The support for remat of instructions with a register operand is hackish, to ↵Evan Cheng2008-03-311-18/+7
| | | | | | say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48976 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove isImplicitDef TargetInstrDesc flag.Evan Cheng2008-03-151-4/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48381 91177308-0d34-0410-b5e6-96231b3b80d8
* Transfer physical register spill info when load / store folding happens.Evan Cheng2008-03-111-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48246 91177308-0d34-0410-b5e6-96231b3b80d8
* When the register allocator runs out of registers, spill a physical register ↵Evan Cheng2008-03-111-0/+78
| | | | | | around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48218 91177308-0d34-0410-b5e6-96231b3b80d8
* Refactor code. Remove duplicated functions that basically do the same thing asEvan Cheng2008-03-051-12/+13
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
* Spiller now remove unused spill slots.Evan Cheng2008-02-271-0/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename PrintableName to Name.Bill Wendling2008-02-261-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-1/+1
| | | | | | | would have been a Godsend here! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
* All remat'ed loads cannot be folded into two-address code. Not just argument ↵Evan Cheng2008-02-251-4/+4
| | | | | | loads. This change doesn't really have any impact on codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47557 91177308-0d34-0410-b5e6-96231b3b80d8
* Correctly determine whether a argument load can be folded into its uses.Evan Cheng2008-02-251-45/+52
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47545 91177308-0d34-0410-b5e6-96231b3b80d8
* Rematerialization logic was overly conservative when it comes to loads from ↵Evan Cheng2008-02-231-20/+6
| | | | | | fixed stack slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47529 91177308-0d34-0410-b5e6-96231b3b80d8
* If remating a machine instr with virtual register operand, make sure the vr ↵Evan Cheng2008-02-231-2/+1
| | | | | | is avaliable at all uses regardless of whether it would be folded. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47526 91177308-0d34-0410-b5e6-96231b3b80d8
* Recognize loads of arguments as re-materializable first. Therefore if ↵Evan Cheng2008-02-231-24/+26
| | | | | | isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47520 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix spill weight updating bug.Evan Cheng2008-02-231-15/+27
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47507 91177308-0d34-0410-b5e6-96231b3b80d8
* Enable re-materialization of instructions which have virtual register ↵Evan Cheng2008-02-221-28/+155
| | | | | | | | | operands if the definition of the operand also reaches its uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47475 91177308-0d34-0410-b5e6-96231b3b80d8
* Clean up some spilling code using MachineRegisterInfo.Evan Cheng2008-02-211-22/+51
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47416 91177308-0d34-0410-b5e6-96231b3b80d8
* New helper function getMBBFromIndex() that given an index in any instruction ↵Roman Levenstein2008-02-181-16/+0
| | | | | | of an MBB returns a pointer the MBB. Reviewed by Evan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47267 91177308-0d34-0410-b5e6-96231b3b80d8
* - Removing the infamous r2rMap_ and rep() method. Now the coalescer will updateEvan Cheng2008-02-151-28/+36
| | | | | | | | register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47167 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a potential serious problem where kills belonging to the val# defined by ↵Evan Cheng2008-02-131-3/+2
| | | | | | a two-address instruction is also on the val# that defines the input. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47057 91177308-0d34-0410-b5e6-96231b3b80d8