- blockinit
int blockinit()
Initialize block information.
- compdom
void compdom()
Compute dominators (Bdom) for each block.
See Aho & Ullman Fig. 13.5.
Note that flow graph is reducible if there is only one
pass through the loop.
Input:
dfo[]
Output:
fills in the Bdom vector for each block
- dom
bool dom(block* A, block* B)
Return !=0 if block A dominates block B.
- el_length
int el_length(elem* e)
Count number of elems in a tree
- fillInDNunambig
void fillInDNunambig(vec_t v, elem* e)
Fill in the DefNode.DNumambig vector.
Set bits defnod[] indices for entries
which are completely destroyed when e is
unambiguously assigned to.
- findloopparameters
bool findloopparameters(elem* erel, elem* rdeq, elem* rdinc)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
- isLI
int isLI(elem* n)
Undocumented in source. Be warned that the author may not have intended to support it.
- loopopt
void loopopt()
Loop invariant and induction variable elimination.
Input:
iter which optimization iteration we are on
- loopunroll
bool loopunroll(loop* l)
Undocumented in source. Be warned that the author may not have intended to support it.
- makeLI
void makeLI(elem* n)
Undocumented in source. Be warned that the author may not have intended to support it.
- symbol_isintab
char symbol_isintab(Symbol* s)
Undocumented in source. Be warned that the author may not have intended to support it.
- updaterd
void updaterd(elem* n, vec_t GEN, vec_t KILL)
Update rd vector.
Input:
n assignment elem or function call elem or OPasm elem
rd reaching def vector to update
(clear bits for defs we kill, set bit for n (which is the
def we are genning))
vecdim go.defnod.length
Compiler implementation of the D programming language.