X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCBBlock.h;h=1f853df87d61af37a5e8aaa9092e3453b6b67e94;hb=eae1bd2f705a2c61e143c539f8c4d1e9c2b4efe6;hp=68c29061404c96f5c38b2ef3cfbf12eff522c43a;hpb=ed06e548a77cdabcb6f8651394317dcb474096bf;p=fw%2Fsdcc diff --git a/src/SDCCBBlock.h b/src/SDCCBBlock.h index 68c29061..1f853df8 100644 --- a/src/SDCCBBlock.h +++ b/src/SDCCBBlock.h @@ -49,13 +49,14 @@ typedef struct eBBlock /* control flow analysis */ set *succList; /* list eBBlocks which are successors */ - bitVect *succVect; /* bitVector of successors */ + bitVect *succVect; /* bitVector of successors (index is bbnum) */ set *predList; /* predecessors of this basic block */ - bitVect *domVect; /* list of nodes this is dominated by */ + bitVect *domVect; /* list of nodes this is dominated by (index is bbnum) */ /* data flow analysis */ set *inExprs; /* in coming common expressions */ set *outExprs; /* out going common expressions */ + set *killedExprs; /* killed common expressions */ bitVect *inDefs; /* in coming defintions */ bitVect *outDefs; /* out going defintions */ bitVect *defSet; /* symbols defined in block */ @@ -70,6 +71,14 @@ typedef struct eBBlock } eBBlock; +typedef struct ebbIndex + { + int count; /* number of blocks in the index */ + eBBlock **bbOrder; /* blocks in bbnum order */ + eBBlock **dfOrder; /* blocks in dfnum (depth first) order */ + } +ebbIndex; + typedef struct edge { @@ -78,6 +87,7 @@ typedef struct edge } edge; + extern int eBBNum; extern set *graphEdges; @@ -85,17 +95,17 @@ extern set *graphEdges; DEFSETFUNC (printEntryLabel); eBBlock *neweBBlock (); edge *newEdge (eBBlock *, eBBlock *); -eBBlock *eBBWithEntryLabel (eBBlock **, symbol *, int); +eBBlock *eBBWithEntryLabel (ebbIndex *, symbol *); DEFSETFUNC (ifFromIs); set *edgesTo (eBBlock *); void remiCodeFromeBBlock (eBBlock *, iCode *); void addiCodeToeBBlock (eBBlock *, iCode *, iCode *); -eBBlock **iCodeBreakDown (iCode *, int *); +ebbIndex *iCodeBreakDown (iCode *); void replaceSymBySym (set *, operand *, operand *); iCode *iCodeFromeBBlock (eBBlock **, int); int otherPathsPresent (eBBlock **, eBBlock *); void replaceLabel (eBBlock *, symbol *, symbol *); -void dumpEbbsToFileExt (int, eBBlock **, int); +void dumpEbbsToFileExt (int, ebbIndex *); void dumpLiveRanges (int, hTab * liveRanges); void closeDumpFiles();