| #
816f5f4c |
| 18-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Extend live debug values down the dominator tree by following copies.
The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we should be able to extend the range of a value by
Extend live debug values down the dominator tree by following copies.
The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we should be able to extend the range of a value by tracking that value through register copies. This greatly improves the debug value tracking for function arguments that for some reason are copied to a second virtual register at the end of the entry block.
We only extend the debug value range where its register is killed. All original llvm.dbg.value locations are still respected.
Copies from physical registers are ignored. That should not be a problem since the entry block already adds DBG_VALUE instructions for the virtual registers holding the function arguments.
llvm-svn: 127912
show more ...
|
|
Revision tags: llvmorg-2.9.0-rc1 |
|
| #
26ffa018 |
| 04-Feb-2011 |
Devang Patel <[email protected]> |
DebugLoc associated with a machine instruction is used to emit location entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, whi
DebugLoc associated with a machine instruction is used to emit location entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, while inserting DBG_VALUE remember original debug location for the first instruction and reuse it, otherwise dwarf writer may be mislead in identifying the variable's scope.
llvm-svn: 124845
show more ...
|
| #
088b30aa |
| 13-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Better terminator avoidance.
This approach also works when the terminator doesn't have a slot index. (Which can happen??)
llvm-svn: 123413
|
| #
05a0b55e |
| 13-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Temporary workaround for an i386 crash in LiveDebugVariables.
llvm-svn: 123400
|
| #
74ded57b |
| 12-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Try again enabling LiveDebugVariables.
llvm-svn: 123342
|
| #
e63dfeee |
| 12-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Don't emit a DBG_VALUE for a spill slot that the rewriter decided not to use after all.
llvm-svn: 123339
|
| #
2ffee66e |
| 12-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Fix braino in dominator tree walk.
llvm-svn: 123338
|
| #
1a3534af |
| 12-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Sometimes, old virtual registers can linger on DBG_VALUE instructions.
Make sure we don't crash in that case, but simply turn them into %noreg instead.
llvm-svn: 123335
|
| #
43812bfa |
| 11-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
The world is not ready for LiveDebugVariables yet.
llvm-svn: 123290
|
| #
8c98495f |
| 11-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Enable LiveDebugVariables by default.
llvm-svn: 123282
|
| #
803f48bc |
| 11-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
Speculatively revert r123032.
llvm-svn: 123039
|
| #
6381e158 |
| 07-Jan-2011 |
Devang Patel <[email protected]> |
Appropriately truncate debug info range in dwarf output. Enable live debug variables pass.
llvm-svn: 123032
|
| #
922e1fac |
| 03-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
Rename virtRegMap to avoid confusion with the VirtRegMap that it isn't.
llvm-svn: 120846
|
| #
4408603a |
| 03-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
Coalesce debug locations when possible, causing less DBG_VALUE instructions to be emitted.
llvm-svn: 120845
|
| #
afc2bc2c |
| 03-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
Emit DBG_VALUE instructions from LiveDebugVariables.
llvm-svn: 120842
|
| #
25cde34a |
| 03-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
Also update virtRegMap when renaming virtual registers.
llvm-svn: 120841
|
| #
9ec20111 |
| 02-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
Update LiveDebugVariables during coalescing.
llvm-svn: 120720
|
| #
4be0bd79 |
| 02-Dec-2010 |
Jakob Stoklund Olesen <[email protected]> |
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 <[email protected]> |
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 ...
|