summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2003-08-14 20:45:56 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2003-08-14 20:45:56 +0000
commit96c81e9fff5cdaa880857d47d9fda85fb630523e (patch)
tree092e9047de09b8fadba1d54a6115cd2259dfada5 /llvm/lib/Analysis
parent47be951787629113b21aae2d3265caf754d92893 (diff)
downloadbcm5719-llvm-96c81e9fff5cdaa880857d47d9fda85fb630523e.tar.gz
bcm5719-llvm-96c81e9fff5cdaa880857d47d9fda85fb630523e.zip
Improvement to the previous fix: branch following a delay slot of
another delayed instr. would cause the later sanity-check (assertion) in PhyRegAlloc.cpp to fail, even though there is really no error. llvm-svn: 7848
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp b/llvm/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
index 8cde6e1de7a..764ec36f37f 100644
--- a/llvm/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
+++ b/llvm/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
@@ -290,9 +290,11 @@ void FunctionLiveVarInfo::calcLiveVarSetsForBB(const BasicBlock *BB) {
for (unsigned i = 0; i < DS; ++i, ++fwdMII) {
assert(fwdMII != MIVec.end() && "Missing instruction in delay slot?");
MachineInstr* DelaySlotMI = *fwdMII;
- set_union(*MInst2LVSetBI[DelaySlotMI], *NewSet);
- if (i+1 == DS)
- set_union(*MInst2LVSetAI[DelaySlotMI], *NewSet);
+ if (! TM.getInstrInfo().isNop(DelaySlotMI->getOpCode())) {
+ set_union(*MInst2LVSetBI[DelaySlotMI], *NewSet);
+ if (i+1 == DS)
+ set_union(*MInst2LVSetAI[DelaySlotMI], *NewSet);
+ }
}
}
OpenPOWER on IntegriCloud