Don't require a BB to look-up live variables, unless they may need to
authorVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 29 Jul 2003 19:42:32 +0000 (19:42 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 29 Jul 2003 19:42:32 +0000 (19:42 +0000)
be recomputed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7388 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.cpp

index 63c20194df02b034a7ddbc9540574254b3e65b03..0e8e0ac41bf19d5190c25cb5cabbc8eb4f24691f 100644 (file)
@@ -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
index 63c20194df02b034a7ddbc9540574254b3e65b03..0e8e0ac41bf19d5190c25cb5cabbc8eb4f24691f 100644 (file)
@@ -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