aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h29
-rw-r--r--include/llvm/Analysis/LiveVar/LiveVarMap.h24
-rw-r--r--include/llvm/CodeGen/FunctionLiveVarInfo.h29
-rw-r--r--lib/Analysis/LiveVar/BBLiveVar.h43
-rw-r--r--lib/Target/SparcV9/LiveVar/BBLiveVar.h43
5 files changed, 70 insertions, 98 deletions
diff --git a/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h b/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h
index d126b6e03e..05723748d8 100644
--- a/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h
+++ b/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h
@@ -67,19 +67,20 @@
static const int DEBUG_LV = 0;
-#include "llvm/Analysis/LiveVar/BBLiveVar.h"
#include "llvm/Pass.h"
+class BBLiveVar;
+class MachineInstr;
+class LiveVarSet;
class MethodLiveVarInfo : public MethodPass {
-
- // A map betwn the BasicBlock and BBLiveVar
- BBToBBLiveVarMapType BB2BBLVMap;
+ // A map between the BasicBlock and BBLiveVar
+ std::map<const BasicBlock *, BBLiveVar *> BB2BBLVMap;
// Machine Instr to LiveVarSet Map for providing LVset BEFORE each inst
- MInstToLiveVarSetMapType MInst2LVSetBI;
+ std::map<const MachineInstr *, const LiveVarSet *> MInst2LVSetBI;
// Machine Instr to LiveVarSet Map for providing LVset AFTER each inst
- MInstToLiveVarSetMapType MInst2LVSetAI;
+ std::map<const MachineInstr *, const LiveVarSet *> MInst2LVSetAI;
// --------- private methods -----------------------------------------
@@ -118,22 +119,18 @@ public:
// --------- Functions to access analysis results -------------------
// gets OutSet of a BB
- inline const LiveVarSet *getOutSetOfBB( const BasicBlock *BB) const {
- return BB2BBLVMap.find(BB)->second->getOutSet();
- }
+ const LiveVarSet *getOutSetOfBB(const BasicBlock *BB) const;
// gets InSet of a BB
- inline const LiveVarSet *getInSetOfBB( const BasicBlock *BB) const {
- return BB2BBLVMap.find(BB)->second->getInSet();
- }
+ const LiveVarSet *getInSetOfBB(const BasicBlock *BB) const;
// gets the Live var set BEFORE an instruction
- const LiveVarSet * getLiveVarSetBeforeMInst(const MachineInstr *Inst,
- const BasicBlock *CurBB);
+ const LiveVarSet *getLiveVarSetBeforeMInst(const MachineInstr *MI,
+ const BasicBlock *BB);
// gets the Live var set AFTER an instruction
- const LiveVarSet * getLiveVarSetAfterMInst(const MachineInstr *MInst,
- const BasicBlock *CurBB);
+ const LiveVarSet *getLiveVarSetAfterMInst(const MachineInstr *MI,
+ const BasicBlock *BB);
};
#endif
diff --git a/include/llvm/Analysis/LiveVar/LiveVarMap.h b/include/llvm/Analysis/LiveVar/LiveVarMap.h
index a9e170170f..e69de29bb2 100644
--- a/include/llvm/Analysis/LiveVar/LiveVarMap.h
+++ b/include/llvm/Analysis/LiveVar/LiveVarMap.h
@@ -1,24 +0,0 @@
-/* Title: LiveVarMap.h -*- C++ -*-
- Author: Ruchira Sasanka
- Date: Jun 30, 01
- Purpose: This file contains the class for a map between the BasicBlock class
- and the BBLiveVar class, which is a wrapper class of BasicBlock
- used for the live variable analysis. The reverse mapping can
- be found in the BBLiveVar class (It has a pointer to the
- corresponding BasicBlock)
-*/
-
-#ifndef LIVE_VAR_MAP_H
-#define LIVE_VAR_MAP_H
-
-#include "Support/HashExtras.h"
-
-class MachineInstr;
-class BasicBlock;
-class BBLiveVar;
-class LiveVarSet;
-
-typedef std::hash_map<const BasicBlock *, BBLiveVar *> BBToBBLiveVarMapType;
-typedef std::hash_map<const MachineInstr *, const LiveVarSet *> MInstToLiveVarSetMapType;
-
-#endif
diff --git a/include/llvm/CodeGen/FunctionLiveVarInfo.h b/include/llvm/CodeGen/FunctionLiveVarInfo.h
index d126b6e03e..05723748d8 100644
--- a/include/llvm/CodeGen/FunctionLiveVarInfo.h
+++ b/include/llvm/CodeGen/FunctionLiveVarInfo.h
@@ -67,19 +67,20 @@
static const int DEBUG_LV = 0;
-#include "llvm/Analysis/LiveVar/BBLiveVar.h"
#include "llvm/Pass.h"
+class BBLiveVar;
+class MachineInstr;
+class LiveVarSet;
class MethodLiveVarInfo : public MethodPass {
-
- // A map betwn the BasicBlock and BBLiveVar
- BBToBBLiveVarMapType BB2BBLVMap;
+ // A map between the BasicBlock and BBLiveVar
+ std::map<const BasicBlock *, BBLiveVar *> BB2BBLVMap;
// Machine Instr to LiveVarSet Map for providing LVset BEFORE each inst
- MInstToLiveVarSetMapType MInst2LVSetBI;
+ std::map<const MachineInstr *, const LiveVarSet *> MInst2LVSetBI;
// Machine Instr to LiveVarSet Map for providing LVset AFTER each inst
- MInstToLiveVarSetMapType MInst2LVSetAI;
+ std::map<const MachineInstr *, const LiveVarSet *> MInst2LVSetAI;
// --------- private methods -----------------------------------------
@@ -118,22 +119,18 @@ public:
// --------- Functions to access analysis results -------------------
// gets OutSet of a BB
- inline const LiveVarSet *getOutSetOfBB( const BasicBlock *BB) const {
- return BB2BBLVMap.find(BB)->second->getOutSet();
- }
+ const LiveVarSet *getOutSetOfBB(const BasicBlock *BB) const;
// gets InSet of a BB
- inline const LiveVarSet *getInSetOfBB( const BasicBlock *BB) const {
- return BB2BBLVMap.find(BB)->second->getInSet();
- }
+ const LiveVarSet *getInSetOfBB(const BasicBlock *BB) const;
// gets the Live var set BEFORE an instruction
- const LiveVarSet * getLiveVarSetBeforeMInst(const MachineInstr *Inst,
- const BasicBlock *CurBB);
+ const LiveVarSet *getLiveVarSetBeforeMInst(const MachineInstr *MI,
+ const BasicBlock *BB);
// gets the Live var set AFTER an instruction
- const LiveVarSet * getLiveVarSetAfterMInst(const MachineInstr *MInst,
- const BasicBlock *CurBB);
+ const LiveVarSet *getLiveVarSetAfterMInst(const MachineInstr *MI,
+ const BasicBlock *BB);
};
#endif
diff --git a/lib/Analysis/LiveVar/BBLiveVar.h b/lib/Analysis/LiveVar/BBLiveVar.h
index 08ccd2fe5c..112e8151d9 100644
--- a/lib/Analysis/LiveVar/BBLiveVar.h
+++ b/lib/Analysis/LiveVar/BBLiveVar.h
@@ -1,20 +1,21 @@
-/* Title: BBLiveVar.h -*- C++ -*-
- Author: Ruchira Sasanka
- Date: Jun 30, 01
- Purpose: This is a wrapper class for BasicBlock which is used by live
- variable anaysis.
-*/
+//===-- BBLiveVar.h - Live Variable Analysis for a BasicBlock ----*- C++ -*--=//
+//
+// This is a wrapper class for BasicBlock which is used by live var analysis.
+//
+//===----------------------------------------------------------------------===//
#ifndef LIVE_VAR_BB_H
#define LIVE_VAR_BB_H
#include "LiveVarSet.h"
-#include "LiveVarMap.h"
+#include <map>
class Method;
+class BasicBlock;
+class Value;
class BBLiveVar {
- const BasicBlock* BaseBB; // pointer to BasicBlock
- unsigned POId; // Post-Order ID
+ const BasicBlock *BB; // pointer to BasicBlock
+ unsigned POID; // Post-Order ID
LiveVarSet DefSet; // Def set for LV analysis
LiveVarSet InSet, OutSet; // In & Out for LV analysis
@@ -22,12 +23,12 @@ class BBLiveVar {
// map that contains phi args->BB they came
// set by calcDefUseSets & used by setPropagate
- std::hash_map<const Value *, const BasicBlock *> PhiArgMap;
+ std::map<const Value *, const BasicBlock *> PhiArgMap;
// method to propogate an InSet to OutSet of a predecessor
- bool setPropagate( LiveVarSet *OutSetOfPred,
- const LiveVarSet *InSetOfThisBB,
- const BasicBlock *PredBB);
+ bool setPropagate(LiveVarSet *OutSetOfPred,
+ const LiveVarSet *InSetOfThisBB,
+ const BasicBlock *PredBB);
// To add an operand which is a def
void addDef(const Value *Op);
@@ -36,21 +37,21 @@ class BBLiveVar {
void addUse(const Value *Op);
public:
- BBLiveVar(const BasicBlock* baseBB, unsigned POId);
+ BBLiveVar(const BasicBlock *BB, unsigned POID);
- inline bool isInSetChanged() const { return InSetChanged; }
+ inline bool isInSetChanged() const { return InSetChanged; }
inline bool isOutSetChanged() const { return OutSetChanged; }
- inline unsigned getPOId() const { return POId; }
+ inline unsigned getPOId() const { return POID; }
- void calcDefUseSets() ; // calculates the Def & Use sets for this BB
- bool applyTransferFunc(); // calcultes the In in terms of Out
+ void calcDefUseSets(); // calculates the Def & Use sets for this BB
+ bool applyTransferFunc(); // calcultes the In in terms of Out
// calculates Out set using In sets of the predecessors
- bool applyFlowFunc(BBToBBLiveVarMapType LVMap);
+ bool applyFlowFunc(std::map<const BasicBlock *, BBLiveVar *> &LVMap);
- inline const LiveVarSet* getOutSet() const { return &OutSet; }
- inline const LiveVarSet* getInSet() const { return &InSet; }
+ inline const LiveVarSet *getOutSet() const { return &OutSet; }
+ inline const LiveVarSet *getInSet() const { return &InSet; }
void printAllSets() const; // for printing Def/In/Out sets
void printInOutSets() const; // for printing In/Out sets
diff --git a/lib/Target/SparcV9/LiveVar/BBLiveVar.h b/lib/Target/SparcV9/LiveVar/BBLiveVar.h
index 08ccd2fe5c..112e8151d9 100644
--- a/lib/Target/SparcV9/LiveVar/BBLiveVar.h
+++ b/lib/Target/SparcV9/LiveVar/BBLiveVar.h
@@ -1,20 +1,21 @@
-/* Title: BBLiveVar.h -*- C++ -*-
- Author: Ruchira Sasanka
- Date: Jun 30, 01
- Purpose: This is a wrapper class for BasicBlock which is used by live
- variable anaysis.
-*/
+//===-- BBLiveVar.h - Live Variable Analysis for a BasicBlock ----*- C++ -*--=//
+//
+// This is a wrapper class for BasicBlock which is used by live var analysis.
+//
+//===----------------------------------------------------------------------===//
#ifndef LIVE_VAR_BB_H
#define LIVE_VAR_BB_H
#include "LiveVarSet.h"
-#include "LiveVarMap.h"
+#include <map>
class Method;
+class BasicBlock;
+class Value;
class BBLiveVar {
- const BasicBlock* BaseBB; // pointer to BasicBlock
- unsigned POId; // Post-Order ID
+ const BasicBlock *BB; // pointer to BasicBlock
+ unsigned POID; // Post-Order ID
LiveVarSet DefSet; // Def set for LV analysis
LiveVarSet InSet, OutSet; // In & Out for LV analysis
@@ -22,12 +23,12 @@ class BBLiveVar {
// map that contains phi args->BB they came
// set by calcDefUseSets & used by setPropagate
- std::hash_map<const Value *, const BasicBlock *> PhiArgMap;
+ std::map<const Value *, const BasicBlock *> PhiArgMap;
// method to propogate an InSet to OutSet of a predecessor
- bool setPropagate( LiveVarSet *OutSetOfPred,
- const LiveVarSet *InSetOfThisBB,
- const BasicBlock *PredBB);
+ bool setPropagate(LiveVarSet *OutSetOfPred,
+ const LiveVarSet *InSetOfThisBB,
+ const BasicBlock *PredBB);
// To add an operand which is a def
void addDef(const Value *Op);
@@ -36,21 +37,21 @@ class BBLiveVar {
void addUse(const Value *Op);
public:
- BBLiveVar(const BasicBlock* baseBB, unsigned POId);
+ BBLiveVar(const BasicBlock *BB, unsigned POID);
- inline bool isInSetChanged() const { return InSetChanged; }
+ inline bool isInSetChanged() const { return InSetChanged; }
inline bool isOutSetChanged() const { return OutSetChanged; }
- inline unsigned getPOId() const { return POId; }
+ inline unsigned getPOId() const { return POID; }
- void calcDefUseSets() ; // calculates the Def & Use sets for this BB
- bool applyTransferFunc(); // calcultes the In in terms of Out
+ void calcDefUseSets(); // calculates the Def & Use sets for this BB
+ bool applyTransferFunc(); // calcultes the In in terms of Out
// calculates Out set using In sets of the predecessors
- bool applyFlowFunc(BBToBBLiveVarMapType LVMap);
+ bool applyFlowFunc(std::map<const BasicBlock *, BBLiveVar *> &LVMap);
- inline const LiveVarSet* getOutSet() const { return &OutSet; }
- inline const LiveVarSet* getInSet() const { return &InSet; }
+ inline const LiveVarSet *getOutSet() const { return &OutSet; }
+ inline const LiveVarSet *getInSet() const { return &InSet; }
void printAllSets() const; // for printing Def/In/Out sets
void printInOutSets() const; // for printing In/Out sets