diff options
author | Andrew Trick <atrick@apple.com> | 2011-02-22 06:52:56 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2011-02-22 06:52:56 +0000 |
commit | fcfcdbc86a56ea97cdb87fe662311df778e85fbb (patch) | |
tree | bc0a0ee63dd5934f8d14c1fb5c5606642dab19ef /lib/CodeGen/VirtRegRewriter.cpp | |
parent | 4ecc82e592745d6995db83ea158b3c15011a84f8 (diff) | |
download | llvm-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.cpp | 6 |
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); } |