#
8c98495f |
| 11-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Enable LiveDebugVariables by default.
llvm-svn: 123282
|
#
803f48bc |
| 11-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't insert DBG_VALUE instructions after the first terminator.
For one, MachineBasicBlock::getFirstTerminator() doesn't understand what is happening, and it also makes sense to have all control flo
Don't insert DBG_VALUE instructions after the first terminator.
For one, MachineBasicBlock::getFirstTerminator() doesn't understand what is happening, and it also makes sense to have all control flow run through the DBG_VALUE.
llvm-svn: 123277
show more ...
|
#
2fb5b315 |
| 10-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.
These functions not longer assert when passed 0, but simply return false instead.
No functional change intended.
llvm-svn: 1
Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.
These functions not longer assert when passed 0, but simply return false instead.
No functional change intended.
llvm-svn: 123155
show more ...
|
#
9adf5e09 |
| 09-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Simplify LiveDebugVariables by storing MachineOperand copies locations instead of using a Location class with the same information.
When making a copy of a MachineOperand that was already stored in
Simplify LiveDebugVariables by storing MachineOperand copies locations instead of using a Location class with the same information.
When making a copy of a MachineOperand that was already stored in a MachineInstr, it is necessary to clear the parent pointer on the copy. Otherwise the register use-def lists become inconsistent.
Add MachineOperand::clearParent() to do that. An alternative would be a custom MachineOperand copy constructor that cleared ParentMI. I didn't want to do that because of the performance impact.
llvm-svn: 123109
show more ...
|
#
1331a15b |
| 09-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.
Print virtual registers numbered from 0 instead of the arbitrary FirstVirtualRegister. The first vi
Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.
Print virtual registers numbered from 0 instead of the arbitrary FirstVirtualRegister. The first virtual register is printed as %vreg0. TRI::NoRegister is printed as %noreg.
llvm-svn: 123107
show more ...
|
#
acbee0b0 |
| 07-Jan-2011 |
Devang Patel <dpatel@apple.com> |
Speculatively revert r123032.
llvm-svn: 123039
|
#
6381e158 |
| 07-Jan-2011 |
Devang Patel <dpatel@apple.com> |
Appropriately truncate debug info range in dwarf output. Enable live debug variables pass.
llvm-svn: 123032
|
#
922e1fac |
| 03-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rename virtRegMap to avoid confusion with the VirtRegMap that it isn't.
llvm-svn: 120846
|
#
4408603a |
| 03-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Coalesce debug locations when possible, causing less DBG_VALUE instructions to be emitted.
llvm-svn: 120845
|
#
afc2bc2c |
| 03-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Emit DBG_VALUE instructions from LiveDebugVariables.
llvm-svn: 120842
|
#
25cde34a |
| 03-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Also update virtRegMap when renaming virtual registers.
llvm-svn: 120841
|
#
9ec20111 |
| 02-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Update LiveDebugVariables during coalescing.
llvm-svn: 120720
|
#
4be0bd79 |
| 02-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Implement the first half of LiveDebugVariables.
Scan the MachineFunction for DBG_VALUE instructions, and replace them with a data structure similar to LiveIntervals. The live range of a DBG_VALUE is
Implement the first half of LiveDebugVariables.
Scan the MachineFunction for DBG_VALUE instructions, and replace them with a data structure similar to LiveIntervals. The live range of a DBG_VALUE is determined by propagating it down the dominator tree until a new DBG_VALUE is found. When a DBG_VALUE lives in a register, its live range is confined to the live range of the register's value.
LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially extended when registers are joined.
The missing half will recreate DBG_VALUE instructions from the intervals when register allocation is complete.
The pass is disabled by default. It can be enabled with the temporary command line option -live-debug-variables.
llvm-svn: 120636
show more ...
|
#
d4900a64 |
| 30-Nov-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Stub out a new LiveDebugVariables pass.
This analysis is going to run immediately after LiveIntervals. It will stay alive during register allocation and keep track of user variables mentioned in DBG
Stub out a new LiveDebugVariables pass.
This analysis is going to run immediately after LiveIntervals. It will stay alive during register allocation and keep track of user variables mentioned in DBG_VALUE instructions.
When the register allocator is moving values between registers and the stack, it is very hard to keep track of DBG_VALUE instructions. We usually get it wrong. This analysis maintains a data structure that makes it easy to update DBG_VALUE instructions.
llvm-svn: 120385
show more ...
|