X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCcse.h;h=1926dd84a4112b19ddf87caa6e0f9d5ddf0da0ae;hb=fd94924a3d743c1c82f4b370d9401d7239172789;hp=5eaf9cf284a6e13d926f41475630b77a6dfe72c8;hpb=15f79deb6cf094bc83de7ade9e272b1ebfd4f640;p=fw%2Fsdcc diff --git a/src/SDCCcse.h b/src/SDCCcse.h index 5eaf9cf2..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,11 +52,12 @@ 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 **); void replaceAllSymBySym (iCode *, operand *, operand *, bitVect **); +iCode *findBackwardDef(operand *,iCode *); +void ReplaceOpWithCheaperOp(operand **op, operand *cop); #endif