* Big cleanups.

* Make BBLiveVar.h effectively an internal header file
* Prepare LiveVarMap.h for deletion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1705 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-02-05 00:33:19 +00:00
parent a51c7a8ef5
commit 0174410fd0
5 changed files with 70 additions and 98 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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