X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCcse.h;h=1926dd84a4112b19ddf87caa6e0f9d5ddf0da0ae;hb=61c6515b039a977d80942130e789e6fc0f243cf5;hp=f2770b7682ef25028a73f11cbde71f23ac5194fa;hpb=cfacc9043f84988c742792b7907cb74f670589f1;p=fw%2Fsdcc diff --git a/src/SDCCcse.h b/src/SDCCcse.h index f2770b76..1926dd84 100644 --- a/src/SDCCcse.h +++ b/src/SDCCcse.h @@ -31,10 +31,13 @@ typedef struct cseDef { - unsigned int key; + int key; operand *sym; /* defining symbol */ iCode *diCode; /* defining instruction */ - + bitVect *ancestors; /* keys of the symbol's ancestors */ + int fromGlobal:1; /* defining symbol's value computed from a global */ + int fromAddrTaken:1; /* defining symbol's value computed from a */ + /* symbol whose address was taken */ } cseDef; @@ -42,7 +45,6 @@ cseDef; cseDef *newCseDef (operand *, iCode *); int isCseDefEqual (void *, void *); int pcseDef (void *, va_list); -void algebraicOpts (iCode *); DEFSETFUNC (ifDiCodeIsX); int ifDiCodeIs (set *, iCode *); DEFSETFUNC (ifDefSymIsX); @@ -50,9 +52,8 @@ int ifDefSymIs (set *, operand *); DEFSETFUNC (findPrevIc); DEFSETFUNC (ifOperandsHave); DEFSETFUNC (findCheaperOp); -int cseBBlock (eBBlock *, int, eBBlock **, int); -int cseAllBlocks (eBBlock **, int); -void ifxOptimize (iCode *, set *, int, eBBlock *, int *, eBBlock **, int); +int cseBBlock (eBBlock *, int, ebbIndex *); +int cseAllBlocks (ebbIndex *, int computeOnly); void unsetDefsAndUses (iCode *); void updateSpillLocation (iCode * ic,int); void setUsesDefs (operand *, bitVect *, bitVect *, bitVect **);