- REGSIZE
int REGSIZE()
Size of a register in bytes
- _align
targ_size_t _align(targ_size_t size, targ_size_t offset)
- alignOffset (from dmd.backend.dout)
void alignOffset(int seg, targ_size_t datasize) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Align segment offset.
Input:
seg segment to be aligned
datasize size in bytes of object to be aligned
- baseclass_find (from dmd.backend.symbol)
baseclass_t* baseclass_find(baseclass_t* bm, Classsym* sbase) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Look down baseclass list to find sbase.
- baseclass_find_nest (from dmd.backend.symbol)
baseclass_t* baseclass_find_nest(baseclass_t* bm, Classsym* sbase) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Undocumented in source.
- baseclass_nitems (from dmd.backend.symbol)
int baseclass_nitems(baseclass_t* b) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Calculate number of baseclasses in list.
- binary (from dmd.backend.util2)
int binary(const(char)* p, size_t len, const(char)** table, int high) via public
import dmd.backend.util2 : binary;
Undocumented in source.
- block_appendexp (from dmd.backend.blockopt)
void block_appendexp(block* b, elem* e) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
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_calloc (from dmd.backend.blockopt)
block* block_calloc() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Undocumented in source.
- block_clearvisit (from dmd.backend.blockopt)
void block_clearvisit() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
- block_compbcount (from dmd.backend.blockopt)
void block_compbcount() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Compute number of parents (Bcount) of each basic block.
- block_endfunc (from dmd.backend.blockopt)
void block_endfunc(int flag) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Mark end of function.
flag:
0 do a "return"
1 do a "return 0"
- block_free (from dmd.backend.blockopt)
void block_free(block* b) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
- block_goto (from dmd.backend.blockopt)
void block_goto(block* bgoto, block* bnew) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Goto a block named gotolbl.
Start a new block that is labelled by newlbl.
- block_goto (from dmd.backend.blockopt)
void block_goto(block* bgoto, block* bnew) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Goto a block named gotolbl.
Start a new block that is labelled by newlbl.
- block_goto (from dmd.backend.blockopt)
void block_goto(block* bgoto, block* bnew) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Goto a block named gotolbl.
Start a new block that is labelled by newlbl.
- block_goto (from dmd.backend.blockopt)
void block_goto(block* bgoto, block* bnew) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Goto a block named gotolbl.
Start a new block that is labelled by newlbl.
- block_init (from dmd.backend.blockopt)
void block_init() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Undocumented in source.
- block_next (from dmd.backend.blockopt)
void block_next(Blockx* bctx, int bc, block* bn) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Finish up this block and start the next one.
- block_next (from dmd.backend.blockopt)
void block_next(Blockx* bctx, int bc, block* bn) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Finish up this block and start the next one.
- block_optimizer_free (from dmd.backend.blockopt)
void block_optimizer_free(block* b) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Free optimizer gathered data.
- block_pred (from dmd.backend.blockopt)
void block_pred() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Build predecessor list (Bpred) for each block.
- block_ptr (from dmd.backend.blockopt)
void block_ptr() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Replace block numbers with block pointers.
- block_term (from dmd.backend.blockopt)
void block_term() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
- block_visit (from dmd.backend.blockopt)
void block_visit(block* b) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Visit block and each of its predecessors.
- blocklist_free (from dmd.backend.blockopt)
void blocklist_free(block** pb) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
- blockopt (from dmd.backend.blockopt)
void blockopt(int iter) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Perform branch optimization on basic blocks.
- brcombine (from dmd.backend.blockopt)
void brcombine() via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Try to remove control structure.
That is, try to resolve if-else, goto and return statements
into &&, || and ?: combinations.
- cg87_reset (from dmd.backend.cg87)
void cg87_reset() via public
import dmd.backend.cg87 : loadconst, cg87_reset;
Reset statics for another .obj file.
- cgcs_term (from dmd.backend.cgcs)
void cgcs_term() via public
import dmd.backend.cgcs : comsubs, cgcs_term;
- cod3_thunk (from dmd.backend.cod3)
void cod3_thunk(Symbol* sthunk, Symbol* sfunc, uint p, tym_t thisty, uint d, int i, uint d2) via public
import dmd.backend.cod3 : cod3_thunk;
Generate code for, and output a thunk.
- compdfo (from dmd.backend.blockopt)
void compdfo(Barray!(block*) dfo, block* startblock) via public
import dmd.backend.blockopt : bc_goal, block_calloc, block_init, block_term, block_next, block_next, block_goto, block_goto, block_goto, block_goto, block_ptr, block_pred, block_clearvisit, block_visit, block_compbcount, blocklist_free, block_optimizer_free, block_free, block_appendexp, block_endfunc, brcombine, blockopt, compdfo;
Compute depth first order (DFO).
Equivalent to Aho & Ullman Fig. 13.8.
Blocks not in dfo[] are unreachable.
- comsubs (from dmd.backend.cgcs)
void comsubs() via public
import dmd.backend.cgcs : comsubs, cgcs_term;
Do common subexpression elimination for non-optimized builds.
- dom (from dmd.backend.gloop)
bool dom(block* A, block* B) via public
import dmd.backend.gloop : dom;
Test if block A dominates block B.
- doptelem (from dmd.backend.cgelem)
elem* doptelem(elem* e, goal_t goal) via public
import dmd.backend.cgelem : doptelem, postoptelem, elemisone;
Optimize and canonicalize an expression tree.
Fiddle with double operators so that the rvalue is a pointer
(this is needed by the 8086 code generator).
- dwarf_CFA_args_size (from dmd.backend.dwarfdbginf)
void dwarf_CFA_args_size(size_t sz) via public
import dmd.backend.dwarfdbginf : dwarf_CFA_set_loc, dwarf_CFA_set_reg_offset, dwarf_CFA_offset, dwarf_CFA_args_size;
Set total size of arguments pushed on the stack.
- dwarf_CFA_offset (from dmd.backend.dwarfdbginf)
void dwarf_CFA_offset(int reg, int offset) via public
import dmd.backend.dwarfdbginf : dwarf_CFA_set_loc, dwarf_CFA_set_reg_offset, dwarf_CFA_offset, dwarf_CFA_args_size;
Undocumented in source.
- dwarf_CFA_set_loc (from dmd.backend.dwarfdbginf)
void dwarf_CFA_set_loc(uint location) via public
import dmd.backend.dwarfdbginf : dwarf_CFA_set_loc, dwarf_CFA_set_reg_offset, dwarf_CFA_offset, dwarf_CFA_args_size;
Undocumented in source.
- dwarf_CFA_set_reg_offset (from dmd.backend.dwarfdbginf)
void dwarf_CFA_set_reg_offset(int reg, int offset) via public
import dmd.backend.dwarfdbginf : dwarf_CFA_set_loc, dwarf_CFA_set_reg_offset, dwarf_CFA_offset, dwarf_CFA_args_size;
Undocumented in source.
- eecontext_convs (from dmd.backend.ee)
void eecontext_convs(SYMIDX marksi) via public
import dmd.backend.ee : eecontext_convs;
///////////////////////////////////
- elemisone (from dmd.backend.cgelem)
int elemisone(elem* e) via public
import dmd.backend.cgelem : doptelem, postoptelem, elemisone;
- err_exit (from dmd.backend.util2)
void err_exit() via public
import dmd.backend.util2 : err_exit, ispow2;
Clean up and exit program.
- except_gentables (from dmd.backend.eh)
Symbol* except_gentables() via public
import dmd.backend.eh : except_gentables;
Generate and output scope table.
- exp2_copytotemp (from dmd.backend.elem)
elem* exp2_copytotemp(elem* e) via public
import dmd.backend.elem : exp2_copytotemp;
Replace (e) with ((stmp = e),stmp)
- freesymtab (from dmd.backend.symbol)
void freesymtab(Symbol** stab, SYMIDX n1, SYMIDX n2) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Free up the symbols stab[n1 .. n2]
- go_flag (from dmd.backend.go)
int go_flag(char* cp) via public
import dmd.backend.go : go_flag, optfunc;
Parse optimizer command line flag.
Input:
cp flag string
- id_compress (from dmd.backend.compress)
char* id_compress(const(char)* id, int idlen, size_t* plen) via public
import dmd.backend.compress : id_compress;
Compress an identifier for name mangling purposes.
Format is if ASCII, then it's just the char.
If high bit set, then it's a length/offset pair
- ispow2 (from dmd.backend.util2)
int ispow2(ulong c) via public
import dmd.backend.util2 : err_exit, ispow2;
If c is a power of 2, return that power else -1.
- loadconst (from dmd.backend.cg87)
ubyte loadconst(elem* e, int im) via public
import dmd.backend.cg87 : loadconst, cg87_reset;
Determine if there is a special 8087 instruction to load
constant e.
Input:
im 0 load real part
1 load imaginary part
- meminit_free (from dmd.backend.symbol)
void meminit_free(meminit_t* m) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Delete symbol from symbol table, taking care to delete
all children of a symbol.
Make sure there are no more forward references (labels, tags).
Input:
pointer to a symbol
- optfunc (from dmd.backend.go)
void optfunc() via public
import dmd.backend.go : go_flag, optfunc;
- out_readonly (from dmd.backend.dout)
void out_readonly(Symbol* s) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Mark a Symbol as going into a read-only segment.
- out_readonly_comdat (from dmd.backend.dout)
void out_readonly_comdat(Symbol* s, const(void)* p, uint len, uint nzeros) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Output Symbol as a readonly comdat.
- out_readonly_sym (from dmd.backend.dout)
Symbol* out_readonly_sym(tym_t ty, void* p, int len) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Undocumented in source.
- out_regcand (from dmd.backend.dout)
void out_regcand(symtab_t* psymtab) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Determine register candidates.
- out_reset (from dmd.backend.dout)
void out_reset() via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Undocumented in source.
- out_string_literal (from dmd.backend.dout)
Symbol* out_string_literal(const(char)* str, uint len, uint sz) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Write out a readonly string literal in an implementation-defined
manner.
- outdata (from dmd.backend.dout)
void outdata(Symbol* s) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Write out statically allocated data.
Input:
s symbol to be initialized
- outthunk (from dmd.backend.dout)
void outthunk(Symbol* sthunk, Symbol* sfunc, uint p, tym_t thisty, targ_size_t d, int i, targ_size_t d2) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
- postoptelem (from dmd.backend.cgelem)
void postoptelem(elem* e) via public
import dmd.backend.cgelem : doptelem, postoptelem, elemisone;
Do optimizations after bltailrecursion() and before common subexpressions.
- rtlsym_init (from dmd.backend.drtlsym)
void rtlsym_init() via public
import dmd.backend.drtlsym : rtlsym_init, rtlsym_reset, rtlsym_term;
- rtlsym_reset (from dmd.backend.drtlsym)
void rtlsym_reset() via public
import dmd.backend.drtlsym : rtlsym_init, rtlsym_reset, rtlsym_term;
Reset the symbols for the case when we are generating multiple
.OBJ files from one compile.
- rtlsym_term (from dmd.backend.drtlsym)
void rtlsym_term() via public
import dmd.backend.drtlsym : rtlsym_init, rtlsym_reset, rtlsym_term;
- size
targ_size_t size(tym_t ty)
- symbol_add (from dmd.backend.symbol)
SYMIDX symbol_add(symtab_t symtab, Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Undocumented in source.
- symbol_add (from dmd.backend.symbol)
SYMIDX symbol_add(symtab_t symtab, Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Undocumented in source.
- symbol_calloc (from dmd.backend.symbol)
Symbol* symbol_calloc(const(char)[] id) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
- symbol_copy (from dmd.backend.symbol)
Symbol* symbol_copy(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Create a copy of a symbol.
- symbol_free (from dmd.backend.symbol)
void symbol_free(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Undocumented in source.
- symbol_func (from dmd.backend.symbol)
void symbol_func(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Add in the variants for a function symbol.
- symbol_funcalias (from dmd.backend.symbol)
Funcsym* symbol_funcalias(Funcsym* sf) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Create a symbol that is an alias to another function symbol.
- symbol_genauto (from dmd.backend.symbol)
Symbol* symbol_genauto(tym_t ty) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Generate symbol into which we can copy the contents of expression e.
- symbol_genauto (from dmd.backend.symbol)
Symbol* symbol_genauto(tym_t ty) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Generate symbol into which we can copy the contents of expression e.
- symbol_genauto (from dmd.backend.symbol)
Symbol* symbol_genauto(tym_t ty) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Generate symbol into which we can copy the contents of expression e.
- symbol_generate (from dmd.backend.symbol)
Symbol* symbol_generate(SC sclass, type* t) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Create a symbol, give it a name, storage class and type.
- symbol_ident (from dmd.backend.symbol)
const(char)* symbol_ident(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
- symbol_insert (from dmd.backend.symbol)
SYMIDX symbol_insert(symtab_t symtab, Symbol* s, SYMIDX n) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Insert s into symtab at position n.
- symbol_name (from dmd.backend.symbol)
Symbol* symbol_name(const(char)[] name, SC sclass, type* t) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
- symbol_pointerType (from dmd.backend.symbol)
tym_t symbol_pointerType(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Determine pointer type needed to access a Symbol,
essentially what type an OPrelconst should get
for that Symbol.
- symbol_print (from dmd.backend.symbol)
void symbol_print(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Type out symbol information.
- symbol_reset (from dmd.backend.symbol)
void symbol_reset(Symbol* s) via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Reset Symbol so that it's now an "extern" to the next obj file being created.
- symbol_term (from dmd.backend.symbol)
void symbol_term() via public
import dmd.backend.symbol : symbol_print, symbol_term, symbol_ident, symbol_calloc, symbol_name, symbol_generate, symbol_genauto, symbol_genauto, symbol_genauto, symbol_func, symbol_funcalias, meminit_free, baseclass_find, baseclass_find_nest, baseclass_nitems, symbol_free, symbol_add, symbol_add, symbol_insert, freesymtab, symbol_copy, symbol_reset, symbol_pointerType;
Undocumented in source.
- symboldata
Symbol* symboldata(targ_size_t offset, tym_t ty)
Generate symbol of type ty at DATA:offset
- writefunc (from dmd.backend.dout)
void writefunc(Symbol* sfunc) via public
import dmd.backend.dout : outthunk, out_readonly, out_readonly_comdat, out_regcand, writefunc, alignOffset, out_reset, out_readonly_sym, out_string_literal, outdata;
Optimize function,
generate code for it,
and write it out.
Declarations for back end
Compiler implementation of the D programming language.