History log of /llvm-project-15.0.7/llvm/lib/CodeGen/LiveDebugVariables.cpp (Results 201 – 223 of 223)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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 ...


123456789