summaryrefslogtreecommitdiff
path: root/lib/CodeGen/VirtRegRewriter.cpp
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2011-02-22 06:52:56 +0000
committerAndrew Trick <atrick@apple.com>2011-02-22 06:52:56 +0000
commitfcfcdbc86a56ea97cdb87fe662311df778e85fbb (patch)
treebc0a0ee63dd5934f8d14c1fb5c5606642dab19ef /lib/CodeGen/VirtRegRewriter.cpp
parent4ecc82e592745d6995db83ea158b3c15011a84f8 (diff)
downloadllvm-fcfcdbc86a56ea97cdb87fe662311df778e85fbb.tar.gz
llvm-fcfcdbc86a56ea97cdb87fe662311df778e85fbb.tar.bz2
llvm-fcfcdbc86a56ea97cdb87fe662311df778e85fbb.tar.xz
VirtRegRewriter assertion fix.
Apparently it's ok for multiple operands to "kill" the same register. Fixes PR9237. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126190 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/VirtRegRewriter.cpp')
-rw-r--r--lib/CodeGen/VirtRegRewriter.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/CodeGen/VirtRegRewriter.cpp b/lib/CodeGen/VirtRegRewriter.cpp
index 458a2134bf..ec149dddc1 100644
--- a/lib/CodeGen/VirtRegRewriter.cpp
+++ b/lib/CodeGen/VirtRegRewriter.cpp
@@ -478,7 +478,8 @@ static void ResurrectConfirmedKill(unsigned Reg, const TargetRegisterInfo* TRI,
if (!RegKills[KReg])
return;
- assert(KillOps[KReg] == KillOp && "invalid superreg kill flags");
+ assert(KillOps[KReg]->getParent() == KillOp->getParent() &&
+ "invalid superreg kill flags");
KillOps[KReg] = NULL;
RegKills.reset(KReg);
@@ -487,7 +488,8 @@ static void ResurrectConfirmedKill(unsigned Reg, const TargetRegisterInfo* TRI,
for (const unsigned *SR = TRI->getSubRegisters(KReg); *SR; ++SR) {
DEBUG(dbgs() << " Resurrect subreg " << TRI->getName(*SR) << "\n");
- assert(KillOps[*SR] == KillOp && "invalid subreg kill flags");
+ assert(KillOps[*SR]->getParent() == KillOp->getParent() &&
+ "invalid subreg kill flags");
KillOps[*SR] = NULL;
RegKills.reset(*SR);
}