summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveVariables.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-19/+19
| | | | llvm-svn: 46930
* If a vr is already marked alive in a bb, then it has PHI uses that are ↵Evan Cheng2008-02-051-2/+3
| | | | | | visited earlier, then it is not killed in the def block (i.e. not dead). llvm-svn: 46763
* Move some functionality for adding flags to MachineInstr's into methods on ↵Owen Anderson2008-01-241-106/+14
| | | | | | MachineInstr rather than LiveVariables. llvm-svn: 46295
* Move some calls to getVRegDef higher in the callgraph, so they don't get ↵Owen Anderson2008-01-151-11/+11
| | | | | | executed as frequently in performance sensitive code. llvm-svn: 46027
* Remove DefInst from LiveVariables::VarInfo. Use the facilities on ↵Owen Anderson2008-01-151-27/+20
| | | | | | MachineRegisterInfo instead. llvm-svn: 46016
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-1/+1
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptorChris Lattner2008-01-071-2/+1
| | | | llvm-svn: 45680
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-2/+4
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-301-1/+1
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* More cleanups for MachineOperand:Chris Lattner2007-12-301-6/+6
| | | | | | | | | | - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
* Start using the simplified methods for adding operands.Chris Lattner2007-12-301-9/+15
| | | | llvm-svn: 45432
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Live interval splitting:Evan Cheng2007-11-171-10/+39
| | | | | | | | | | | | | | | | | | | When a live interval is being spilled, rather than creating short, non-spillable intervals for every def / use, split the interval at BB boundaries. That is, for every BB where the live interval is defined or used, create a new interval that covers all the defs and uses in the BB. This is designed to eliminate one common problem: multiple reloads of the same value in a single basic block. Note, it does *not* decrease the number of spills since no copies are inserted so the split intervals are *connected* through spill and reloads (or rematerialization). The newly created intervals can be spilled again, in that case, since it does not span multiple basic blocks, it's spilled in the usual manner. However, it can reuse the same stack slot as the previously split interval. This is currently controlled by -split-intervals-at-bb. llvm-svn: 44198
* Bring UsedBlocks back. StrongPHIElimination needs this information.Owen Anderson2007-11-081-1/+8
| | | | llvm-svn: 43866
* Handle cases where a register and one of its super-register are both marked asEvan Cheng2007-11-051-2/+4
| | | | | | defined on the same instruction. This fixes PR1767. llvm-svn: 43699
* Remove isReg, isImm, and isMBB, and change all their users to use Dan Gohman2007-09-141-7/+7
| | | | | | | isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. llvm-svn: 41958
* Fixed a typo that's causing a missing kill marker.Evan Cheng2007-09-121-4/+3
| | | | llvm-svn: 41893
* Sometimes a MI can define a register as well as defining a super-register at theEvan Cheng2007-09-111-6/+7
| | | | | | same time. Do not mark the "smaller" def as dead. llvm-svn: 41871
* Bugs: missing partial uses and redundant partial defs.Evan Cheng2007-08-011-4/+20
| | | | llvm-svn: 40688
* Don't assume that only Uses can be kills. Defs are marked as kills initiallyDan Gohman2007-07-201-8/+6
| | | | | | | | when there are no uses. This fixes a dangling-pointer bug, where pointers to deleted instructions were not removed from kills lists. More info here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009749.html llvm-svn: 40131
* Dead code.Evan Cheng2007-07-171-1/+0
| | | | llvm-svn: 39979
* Replace std::set with SmallPtrSet.Evan Cheng2007-06-271-3/+5
| | | | llvm-svn: 37746
* Properly handle kills of a physical register which has sub-registers that ↵Evan Cheng2007-06-261-13/+73
| | | | | | are read by later instructions. llvm-svn: 37739
* When marking a register as being implicitly defined, make sure to clear its ↵Evan Cheng2007-05-141-0/+2
| | | | | | partial use info as well. llvm-svn: 37046
* Eliminate MarkVirtRegAliveInBlock recursion.Evan Cheng2007-05-081-4/+17
| | | | llvm-svn: 36943
* Drop 'const'Devang Patel2007-05-031-1/+1
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-1/+1
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+1
| | | | llvm-svn: 36632
* Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion.Evan Cheng2007-04-261-1/+2
| | | | llvm-svn: 36483
* Minor bug.Evan Cheng2007-04-261-2/+2
| | | | llvm-svn: 36473
* Be careful when to add implicit kill / dead operands. Don't add them during ↵Evan Cheng2007-04-261-9/+17
| | | | | | / post reg-allocation. llvm-svn: 36458
* Clean up.Evan Cheng2007-04-251-3/+1
| | | | llvm-svn: 36449
* Data structure change to improve compile time (especially in debug mode).Evan Cheng2007-04-251-12/+23
| | | | llvm-svn: 36447
* Fix for PR1306.Evan Cheng2007-04-251-37/+132
| | | | | | | | | - A register def / use now implicitly affects sub-register liveness but does not affect liveness information of super-registers. - Def of a larger register (if followed by a use later) is treated as read/mod/write of a smaller register. llvm-svn: 36434
* VarInfo::UsedBlocks is no longer used. Remove.Evan Cheng2007-04-181-8/+1
| | | | llvm-svn: 36250
* Keep track of number of uses within the function per virtual register.Evan Cheng2007-04-171-0/+1
| | | | llvm-svn: 36214
* Track the BB's where each virtual register is used.Evan Cheng2007-03-171-15/+22
| | | | llvm-svn: 35135
* If a virtual register is already marked alive in this block, that means it isEvan Cheng2007-03-091-1/+6
| | | | | | alive in one of the successor block. Do not add it to the kill list. llvm-svn: 35041
* Avoid variable shadowing.Evan Cheng2007-03-091-2/+2
| | | | llvm-svn: 35039
* Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.Evan Cheng2007-02-191-28/+8
| | | | llvm-svn: 34428
* For PR1207:Reid Spencer2007-02-191-8/+28
| | | | | | | Revert patches that caused the problem. Evan, please investigate and reapply when you've discovered the problem. llvm-svn: 34399
* - Use MRegister::regsOverlap().Evan Cheng2007-02-171-28/+8
| | | | | | - Allow LiveVariables to track liveness of more registers. llvm-svn: 34379
* Allow any MachineBasicBlock (not just the entry block) to have live-in physicalEvan Cheng2007-02-131-8/+8
| | | | | | | registers. Make sure liveinterval analysis is correctly creating live ranges for them. llvm-svn: 34217
* Removed more <iostream> includesBill Wendling2006-12-071-10/+9
| | | | llvm-svn: 32321
* Do away with kill / dead maps. Move kill / dead info onto MI's.Evan Cheng2006-11-151-81/+107
| | | | llvm-svn: 31759
* Add implicit def / use operands to MachineInstr.Evan Cheng2006-11-101-17/+2
| | | | llvm-svn: 31633
* For PR786:Reid Spencer2006-11-021-1/+0
| | | | | | | | | | Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
* Fix for PR929. The PHI nodes were being gone through for each instructionBill Wendling2006-10-031-21/+26
| | | | | | | | in a successor block for every block...resulting in some O(N^k) algorithm which wasn't very good for performance. Calculating this information up front and keeping it in a map made it much faster. llvm-svn: 30697
* Only call isUse/isDef on register operandsChris Lattner2006-09-051-2/+2
| | | | llvm-svn: 30118
* Move two methods out of line, make them work when the record for a machineChris Lattner2006-09-031-0/+36
| | | | | | instruction includes physregs. llvm-svn: 30061
OpenPOWER on IntegriCloud