Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

/users/u3/mtikir/PMaCInstrumentor_v1601/include/LengauerTarjan.h

Go to the documentation of this file.
00001 #ifndef _LengauerTarjan_h_
00002 #define _LengauerTarjan_h_
00003 
00004 #include <LinkedList.h>
00005 
00006 class BasicBlock;
00007 
00008 class LengauerTarjan {
00009 private:
00010     uint32_t              reachableCount;
00011     uint32_t              nodeCount;
00012     uint32_t              rootLoc;
00013 
00014     uint32_t              *dom;
00015     uint32_t              *parent; 
00016     uint32_t              *ancestor;
00017     uint32_t              *child;
00018     uint32_t              *vertex;
00019     uint32_t              *label;
00020     uint32_t              *semi;
00021     uint32_t              *size;
00022 
00023     LinkedList<uint32_t>* bucket;
00024 
00025     BasicBlock**     locToBasicBlock;
00026     uint32_t*        basicBlockToLoc;
00027 
00028     void       depthFirstSearch(uint32_t vertexV,uint32_t* dfsNo);
00029     void       COMPRESS(uint32_t vertexV);
00030     uint32_t   EVAL(uint32_t vertexV);
00031     void       LINK(uint32_t vertexV,uint32_t vertexW);
00032 
00033 public:
00034 
00035     LengauerTarjan(uint32_t blockCount, BasicBlock* root, BasicBlock** blocks); 
00036     ~LengauerTarjan();
00037     void immediateDominators();
00038 };
00039 
00040 #endif

Generated on Mon Jan 28 11:08:31 2008 for PMaCInstrumentor by doxygen 1.3.5