dmd.backend.cgreg

Register allocator

Compiler implementation of the D programming language.

Members

Functions

cgreg_gotoepilog
int cgreg_gotoepilog(block* b, Symbol* s)

Determine if block gets symbol loaded by predecessor epilog (1), or by prolog (0).

cgreg_init
void cgreg_init()
cgreg_reset
void cgreg_reset()
cgreg_spillreg_epilog
void cgreg_spillreg_epilog(block* b, Symbol* s, CodeBuilder cdbstore, CodeBuilder cdbload)

Determine block epilog code - it's either assignments to register, or storing register back in memory.

cgreg_spillreg_prolog
void cgreg_spillreg_prolog(block* b, Symbol* s, CodeBuilder cdbstore, CodeBuilder cdbload)

Determine block prolog code for s - it's either assignments to register, or storing register back in memory.

cgreg_term
void cgreg_term()
cgreg_unregister
void cgreg_unregister(regm_t conflict)

The register variables in this mask can not be in registers. "Unregister" them.

cgreg_used
void cgreg_used(uint bi, regm_t used)

Registers used in block bi.

Structs

Reg
struct Reg

Do register assignments.

Meta