diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-07-13 23:39:05 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-07-13 23:39:05 +0000 |
| commit | 3d604ab9338af222187aff2b386308fab5d4dd7d (patch) | |
| tree | ffd48ff27185d270bdb1237c0fed4f6ea6b767fd /llvm/lib/CodeGen/LiveRangeCalc.h | |
| parent | 130b8d4e97986cf006a3bef2e2b59ae21fd21d34 (diff) | |
| download | bcm5719-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.h | 9 |
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 |

