From: Chris Lattner Date: Tue, 14 Jan 2003 23:05:31 +0000 (+0000) Subject: Move to include/llvm/CodeGen X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9f2b7ffe05d404437cf950db8fa762a0217e825b;p=oota-llvm.git Move to include/llvm/CodeGen git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5285 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h b/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h deleted file mode 100644 index 0bdd7f92b9c..00000000000 --- a/include/llvm/Analysis/LiveVar/FunctionLiveVarInfo.h +++ /dev/null @@ -1,122 +0,0 @@ -/* Title: FunctionLiveVarInfo.h -*- C++ -*- - Author: Ruchira Sasanka - Date: Jun 30, 01 - Purpose: - - This is the interface for live variable info of a function that is required - by any other part of the compiler - - It must be called like: - - FunctionLiveVarInfo FLVI(Function *); // initializes data structures - FLVI.analyze(); // do the actural live variable anal - - After the analysis, getInSetOfBB or getOutSetofBB can be called to get - live var info of a BB. - - The live var set before an instruction can be obtained in 2 ways: - - 1. Use the method getLiveVarSetAfterInst(Instruction *) to get the LV Info - just after an instruction. (also exists getLiveVarSetBeforeInst(..)) - - This function caluclates the LV info for a BB only once and caches that - info. If the cache does not contain the LV info of the instruction, it - calculates the LV info for the whole BB and caches them. - - Getting liveVar info this way uses more memory since, LV info should be - cached. However, if you need LV info of nearly all the instructions of a - BB, this is the best and simplest interfrace. - - - 2. Use the OutSet and applyTranferFuncForInst(const Instruction *const Inst) - declared in LiveVarSet and traverse the instructions of a basic block in - reverse (using const_reverse_iterator in the BB class). - - This is the most memory efficient method if you need LV info for - only several instructions in a BasicBlock. An example is given below: - - - LiveVarSet LVSet; // this will be the set used to traverse through each BB - - // Initialize LVSet so that it is the same as OutSet of the BB - LVSet.setUnion( LVI->getOutSetOfBB( *BBI ) ); - - BasicBlock::InstListType::const_reverse_iterator - InstIterator = InstListInBB.rbegin(); // get the rev iter for inst in BB - - // iterate over all the instructions in BB in reverse - for( ; InstIterator != InstListInBB.rend(); InstIterator++) { - - //...... all code here which uses LVSet ........ - - LVSet.applyTranferFuncForInst(*InstIterator); - - // Now LVSet contains live vars ABOVE the current instrution - } - - See buildInterferenceGraph() for the above example. -*/ - - -#ifndef FUNCTION_LIVE_VAR_INFO_H -#define FUNCTION_LIVE_VAR_INFO_H - -#include "llvm/Pass.h" -#include "llvm/CodeGen/ValueSet.h" - -class BBLiveVar; -class MachineInstr; - -class FunctionLiveVarInfo : public FunctionPass { - // Machine Instr to LiveVarSet Map for providing LVset BEFORE each inst - std::map MInst2LVSetBI; - - // Machine Instr to LiveVarSet Map for providing LVset AFTER each inst - std::map MInst2LVSetAI; - - // Stored Function that the data is computed with respect to - const Function *M; - - // --------- private methods ----------------------------------------- - - // constructs BBLiveVars and init Def and In sets - void constructBBs(const Function *F); - - // do one backward pass over the CFG - bool doSingleBackwardPass(const Function *F, unsigned int iter); - - // calculates live var sets for instructions in a BB - void calcLiveVarSetsForBB(const BasicBlock *BB); - -public: - // --------- Implement the FunctionPass interface ---------------------- - - // runOnFunction - Perform analysis, update internal data structures. - virtual bool runOnFunction(Function &F); - - // releaseMemory - After LiveVariable analysis has been used, forget! - virtual void releaseMemory(); - - // getAnalysisUsage - Provide self! - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } - - // --------- Functions to access analysis results ------------------- - - // gets OutSet of a BB - const ValueSet &getOutSetOfBB(const BasicBlock *BB) const; - - // gets InSet of a BB - const ValueSet &getInSetOfBB(const BasicBlock *BB) const; - - // gets the Live var set BEFORE an instruction - const ValueSet &getLiveVarSetBeforeMInst(const MachineInstr *MI, - const BasicBlock *BB); - - // gets the Live var set AFTER an instruction - const ValueSet &getLiveVarSetAfterMInst(const MachineInstr *MI, - const BasicBlock *BB); -}; - -#endif