View source code
Display the source code in dmd/backend/blockopt.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Module dmd.backend.blockopt
Compiler implementation of the D programming language.
Coverage
https://codecov.io/gh/dlang/dmd/src/master/src/dmd/backend/blockopt.d
Functions
Name | Description |
---|---|
block_appendexp(b, 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_calloc()
|
Handle basic blocks. |
block_calloc_i()
|
Handle basic blocks. |
block_clearvisit()
|
Clear visit. |
block_compbcount()
|
Compute number of parents (Bcount) of each basic block. |
block_endfunc(flag)
|
Mark end of function. |
block_free(b)
|
Free a block. |
block_goto(bx, bc, bn)
|
Finish up this block and start the next one. |
block_init()
|
Handle basic blocks. |
block_next(bctx, bc, bn)
|
Finish up this block and start the next one. |
block_optimizer_free(b)
|
Free optimizer gathered data. |
block_pred()
|
Build predecessor list (Bpred) for each block. |
block_ptr()
|
Replace block numbers with block pointers. Also compute numblks and maxblks. |
block_term()
|
Handle basic blocks. |
block_visit(b)
|
Visit block and each of its predecessors. |
blocklist_free(pb)
|
Free list of blocks. |
blockopt(iter)
|
Perform branch optimization on basic blocks. |
brcombine()
|
Try to remove control structure. That is, try to resolve if-else, goto and return statements into &&, || and ?: combinations. |
compdfo()
|
Compute depth first order (DFO). Equivalent to Aho & Ullman Fig. 13.8. Blocks not in dfo[] are unreachable. |
compdfo(dfo, startblock)
|
Handle basic blocks. |
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_fcalloc(numbytes)
|
Handle basic blocks. |
mem_free()
|
Handle basic blocks. |
Manifest constants
Name | Type | Description |
---|---|---|
SCPP_OR_NTEXCEPTIONS
|
Handle basic blocks. |
Global variables
Name | Type | Description |
---|---|---|
bc_goal
|
uint[20]
|
Handle basic blocks. |
blkzero
|
dmd
|
Handle basic blocks. |
block_freelist
|
dmd
|
Handle basic blocks. |
block_last
|
dmd
|
Handle basic blocks. |
curblock
|
dmd
|
Handle basic blocks. |
dfo
|
Barray!(dmd.backend.cc.block*)
|
Handle basic blocks. |
numblks
|
uint
|
Handle basic blocks. |
startblock
|
dmd
|
Handle basic blocks. |
Aliases
Name | Type | Description |
---|---|---|
MEM_PH_FREE
|
mem_free
|
Handle basic blocks. |
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.