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 | c8981f2e3d6237742714883256cd778acf0eeebe (patch) | |
tree | ef362139fcf7bd150672fefdc8ea7c6bd93a45dd /lib/CodeGen/LiveRangeCalc.h | |
parent | e08c32249fca32cd7b122024a4ca252fcb235694 (diff) | |
download | llvm-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.h | 9 |
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 |