dmd.backend.gloop

Compiler implementation of the D programming language.

Members

Functions

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.

loopopt
void loopopt()

Loop invariant and induction variable elimination. Input: iter which optimization iteration we are on

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

Structs

Iv
struct Iv
UnrollWalker
struct UnrollWalker

Unroll loop if possible.

famlist
struct famlist
loop
struct loop

Loop data structure.

Meta