summaryrefslogtreecommitdiffstats
path: root/llvm/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
commit3d604ab9338af222187aff2b386308fab5d4dd7d (patch)
treeffd48ff27185d270bdb1237c0fed4f6ea6b767fd /llvm/lib/CodeGen/LiveRangeCalc.h
parent130b8d4e97986cf006a3bef2e2b59ae21fd21d34 (diff)
downloadbcm5719-llvm-3d604ab9338af222187aff2b386308fab5d4dd7d.tar.gz
bcm5719-llvm-3d604ab9338af222187aff2b386308fab5d4dd7d.zip
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. llvm-svn: 160207
Diffstat (limited to 'llvm/lib/CodeGen/LiveRangeCalc.h')
-rw-r--r--llvm/lib/CodeGen/LiveRangeCalc.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeCalc.h b/llvm/lib/CodeGen/LiveRangeCalc.h
index 3c9e40f0fef..909829b2285 100644
--- a/llvm/lib/CodeGen/LiveRangeCalc.h
+++ b/llvm/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
OpenPOWER on IntegriCloud