mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-11 11:34:02 +00:00
Fix header file comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8776 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e97fbed83a
commit
5259f8d030
@ -1,62 +1,29 @@
|
|||||||
/* Title: FunctionLiveVarInfo.h -*- C++ -*-
|
//===-- CodeGen/FunctionLiveVarInfo.h - LiveVar Analysis --------*- C++ -*-===//
|
||||||
Author: Ruchira Sasanka
|
//
|
||||||
Date: Jun 30, 01
|
// This is the interface for live variable info of a function that is required
|
||||||
Purpose:
|
// by any other part of the compiler
|
||||||
|
//
|
||||||
This is the interface for live variable info of a function that is required
|
// After the analysis, getInSetOfBB or getOutSetofBB can be called to get
|
||||||
by any other part of the compiler
|
// live var info of a BB.
|
||||||
|
//
|
||||||
It must be called like:
|
// The live var set before an instruction can be obtained in 2 ways:
|
||||||
|
//
|
||||||
FunctionLiveVarInfo FLVI(Function *); // initializes data structures
|
// 1. Use the method getLiveVarSetAfterInst(Instruction *) to get the LV Info
|
||||||
FLVI.analyze(); // do the actural live variable anal
|
// just after an instruction. (also exists getLiveVarSetBeforeInst(..))
|
||||||
|
//
|
||||||
After the analysis, getInSetOfBB or getOutSetofBB can be called to get
|
// This function caluclates the LV info for a BB only once and caches that
|
||||||
live var info of a BB.
|
// 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.
|
||||||
The live var set before an instruction can be obtained in 2 ways:
|
//
|
||||||
|
// Getting liveVar info this way uses more memory since, LV info should be
|
||||||
1. Use the method getLiveVarSetAfterInst(Instruction *) to get the LV Info
|
// cached. However, if you need LV info of nearly all the instructions of a
|
||||||
just after an instruction. (also exists getLiveVarSetBeforeInst(..))
|
// BB, this is the best and simplest interfrace.
|
||||||
|
//
|
||||||
This function caluclates the LV info for a BB only once and caches that
|
// 2. Use the OutSet and applyTranferFuncForInst(const Instruction *const Inst)
|
||||||
info. If the cache does not contain the LV info of the instruction, it
|
// declared in LiveVarSet and traverse the instructions of a basic block in
|
||||||
calculates the LV info for the whole BB and caches them.
|
// reverse (using const_reverse_iterator in the BB class).
|
||||||
|
//
|
||||||
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
|
#ifndef FUNCTION_LIVE_VAR_INFO_H
|
||||||
#define FUNCTION_LIVE_VAR_INFO_H
|
#define FUNCTION_LIVE_VAR_INFO_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user