- block_appendexpvoid block_appendexp(block* b, elem* e) 
- Append elem to the elems comprising the current block.
Read in an expression and put it in curblock.Belem.
If there is one already there, create a tree like:
             ,
            / \
          old  e 
- block_callocblock* block_calloc() 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- block_calloc_iblock* block_calloc_i() 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- block_clearvisitvoid block_clearvisit() 
- block_compbcountvoid block_compbcount() 
- Compute number of parents (Bcount) of each basic block. 
- block_endfuncvoid block_endfunc(int flag) 
- Mark end of function.
flag:
     0       do a "return"
     1       do a "return 0" 
- block_freevoid block_free(block* b) 
- block_gotoblock* block_goto(Blockx* bx, int bc, block* bn) 
- Finish up this block and start the next one. 
- block_gotovoid block_goto() 
- Goto a block named gotolbl.
Start a new block that is labelled by newlbl. 
- block_gotovoid block_goto(block* bn) 
- Goto a block named gotolbl.
Start a new block that is labelled by newlbl. 
- block_gotovoid block_goto(block* bgoto, block* bnew) 
- Goto a block named gotolbl.
Start a new block that is labelled by newlbl. 
- block_initvoid block_init() 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- block_initvarvoid block_initvar(Symbol* s) 
- Mark curblock as initializing Symbol s. 
- block_nextvoid block_next(Blockx* bctx, int bc, block* bn) 
- Finish up this block and start the next one. 
- block_nextvoid block_next(int bc, block* bn) 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- block_nextvoid block_next() 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- block_optimizer_freevoid block_optimizer_free(block* b) 
- Free optimizer gathered data. 
- block_predvoid block_pred() 
- Build predecessor list (Bpred) for each block. 
- block_ptrvoid block_ptr() 
- Replace block numbers with block pointers.
Also compute numblks and maxblks. 
- block_termvoid block_term() 
- block_visitvoid block_visit(block* b) 
- Visit block and each of its predecessors. 
- blocklist_dehydratevoid blocklist_dehydrate(block** pb) 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- blocklist_freevoid blocklist_free(block** pb) 
- blocklist_hydratevoid blocklist_hydrate(block** pb) 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- blockoptvoid blockopt(int iter) 
- Perform branch optimization on basic blocks. 
- brcombinevoid brcombine() 
- Try to remove control structure.
That is, try to resolve if-else, goto and return statements
into &&, || and ?: combinations. 
- compdfovoid compdfo() 
- Compute depth first order (DFO).
Equivalent to Aho & Ullman Fig. 13.8.
Blocks not in dfo[] are unreachable. 
- compdfovoid compdfo(Barray!(block*) dfo, block* startblock) 
- Undocumented in source. Be warned that the author may not have intended to support it. 
- funcsideeffectsvoid funcsideeffects() 
- Determine if function has any side effects.
This means, determine if all the function does is return a value;
no extraneous definitions or effects or exceptions.
A function with no side effects can be CSE'd. It does not reference
statics or indirect references. 
- mem_fcallocvoid* mem_fcalloc(size_t numbytes) 
- Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name. 
- mem_freevoid mem_free(void* ) 
- Undocumented in source but is binding to C. You might be able to learn more by searching the web for its name. 
- util_reallocvoid* util_realloc(void* p, uint n, uint size) 
- Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name. 
Compiler implementation of the D programming language.