summaryrefslogtreecommitdiff
path: root/lib/CodeGen/LiveRangeCalc.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-13 23:39:05 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-13 23:39:05 +0000
commitc8981f2e3d6237742714883256cd778acf0eeebe (patch)
treeef362139fcf7bd150672fefdc8ea7c6bd93a45dd /lib/CodeGen/LiveRangeCalc.h
parente08c32249fca32cd7b122024a4ca252fcb235694 (diff)
downloadllvm-c8981f2e3d6237742714883256cd778acf0eeebe.tar.gz
llvm-c8981f2e3d6237742714883256cd778acf0eeebe.tar.bz2
llvm-c8981f2e3d6237742714883256cd778acf0eeebe.tar.xz
Be more verbose when detecting dominance problems.
Catch uses of undefined physregs that haven't been added to basic block live-in lists. Run the verifier to pinpoint the problem. Also run the verifier when a virtual register use is not jointly dominated by defs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160207 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/LiveRangeCalc.h')
-rw-r--r--lib/CodeGen/LiveRangeCalc.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/CodeGen/LiveRangeCalc.h b/lib/CodeGen/LiveRangeCalc.h
index 3c9e40f0fe..909829b228 100644
--- a/lib/CodeGen/LiveRangeCalc.h
+++ b/lib/CodeGen/LiveRangeCalc.h
@@ -105,9 +105,12 @@ class LiveRangeCalc {
/// to be live-in are added to LiveIn. If a unique reaching def is found,
/// its value is returned, if Kill is jointly dominated by multiple values,
/// NULL is returned.
+ ///
+ /// PhysReg, when set, is used to verify live-in lists on basic blocks.
VNInfo *findReachingDefs(LiveInterval *LI,
MachineBasicBlock *KillMBB,
- SlotIndex Kill);
+ SlotIndex Kill,
+ unsigned PhysReg);
/// updateSSA - Compute the values that will be live in to all requested
/// blocks in LiveIn. Create PHI-def values as required to preserve SSA form.
@@ -157,7 +160,9 @@ public:
/// Kill is not dominated by a single existing value, PHI-defs are inserted
/// as required to preserve SSA form. If Kill is known to be dominated by a
/// single existing value, Alloc may be null.
- void extend(LiveInterval *LI, SlotIndex Kill);
+ ///
+ /// PhysReg, when set, is used to verify live-in lists on basic blocks.
+ void extend(LiveInterval *LI, SlotIndex Kill, unsigned PhysReg = 0);
/// createDeadDefs - Create a dead def in LI for every def operand of Reg.
/// Each instruction defining Reg gets a new VNInfo with a corresponding