summaryrefslogtreecommitdiff
path: root/lib/Analysis
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis')
-rw-r--r--lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp b/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
index 63c20194df..0e8e0ac41b 100644
--- a/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
+++ b/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
@@ -180,28 +180,29 @@ void FunctionLiveVarInfo::releaseMemory() {
const ValueSet &
FunctionLiveVarInfo::getLiveVarSetBeforeMInst(const MachineInstr *MInst,
const BasicBlock *BB) {
- if (const ValueSet *LVSet = MInst2LVSetBI[MInst]) {
- return *LVSet; // if found, just return the set
- } else {
- calcLiveVarSetsForBB(BB); // else, calc for all instrs in BB
- return *MInst2LVSetBI[MInst];
+ const ValueSet *LVSet = MInst2LVSetBI[MInst];
+ if (LVSet == NULL && BB != NULL) { // if not found and BB provided
+ calcLiveVarSetsForBB(BB); // calc LVSet for all instrs in BB
+ LVSet = MInst2LVSetBI[MInst];
}
+ return *LVSet;
}
//-----------------------------------------------------------------------------
// Gives live variable information after a machine instruction
//-----------------------------------------------------------------------------
+
const ValueSet &
FunctionLiveVarInfo::getLiveVarSetAfterMInst(const MachineInstr *MI,
const BasicBlock *BB) {
- if (const ValueSet *LVSet = MInst2LVSetAI[MI]) {
- return *LVSet; // if found, just return the set
- } else {
- calcLiveVarSetsForBB(BB); // else, calc for all instrs in BB
+ const ValueSet *LVSet = MInst2LVSetAI[MI];
+ if (LVSet == NULL && BB != NULL) { // if not found and BB provided
+ calcLiveVarSetsForBB(BB); // calc LVSet for all instrs in BB
return *MInst2LVSetAI[MI];
}
+ return *LVSet;
}
// This function applies a machine instr to a live var set (accepts OutSet) and