2014-11-16 04:59:13 -05:00
|
|
|
USING: compiler.cfg compiler.cfg.instructions help.markup help.syntax
|
|
|
|
sequences ;
|
2014-07-21 12:30:42 -04:00
|
|
|
IN: compiler.cfg.def-use
|
|
|
|
|
2014-11-16 04:59:13 -05:00
|
|
|
HELP: compute-insns
|
|
|
|
{ $values { "cfg" cfg } }
|
|
|
|
{ $description "Computes a mapping from vregs to the instructions that define them and store the result in the " { $link insns } " variable." } ;
|
|
|
|
|
2014-07-21 12:30:42 -04:00
|
|
|
HELP: defs-vregs
|
|
|
|
{ $values { "insn" insn } { "seq" sequence } }
|
|
|
|
{ $description "Returns the sequence of vregs defined, or introduced, by this instruction." }
|
|
|
|
{ $examples
|
|
|
|
{ $example
|
2014-08-14 12:59:27 -04:00
|
|
|
"USING: compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.registers prettyprint ;"
|
2014-07-21 12:30:42 -04:00
|
|
|
"T{ ##peek f 37 D 0 0 } defs-vregs ."
|
|
|
|
"{ 37 }"
|
|
|
|
}
|
|
|
|
} ;
|
|
|
|
|
2014-11-16 04:59:13 -05:00
|
|
|
HELP: insn-of
|
|
|
|
{ $values { "vreg" "virtual register" } { "insn" insn } }
|
|
|
|
{ $description "Maps the vreg to the instruction that defined it." } ;
|
|
|
|
|
|
|
|
HELP: temp-vregs
|
|
|
|
{ $values { "insn" insn } { "seq" sequence } }
|
|
|
|
{ $description "Returns the sequence of temporary vregs used by this instruction." } ;
|
|
|
|
|
2014-07-21 12:30:42 -04:00
|
|
|
HELP: uses-vregs
|
|
|
|
{ $values { "insn" insn } { "seq" sequence } }
|
|
|
|
{ $description "Returns the sequence of vregs used by this instruction." }
|
|
|
|
{ $examples
|
|
|
|
{ $example
|
2014-08-14 12:59:27 -04:00
|
|
|
"USING: compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.registers prettyprint ;"
|
2014-07-21 12:30:42 -04:00
|
|
|
"T{ ##replace f 37 D 1 6 } uses-vregs ."
|
|
|
|
"{ 37 }"
|
|
|
|
}
|
|
|
|
} ;
|
2014-11-15 01:56:36 -05:00
|
|
|
|
2014-11-16 04:59:13 -05:00
|
|
|
ARTICLE: "compiler.cfg.def-use" "Common code used by several passes for def-use analysis"
|
|
|
|
"The " { $vocab-link "compiler.cfg.def-use" } " contains tools to correlate SSA instructions with virtual registers defined or used by them."
|
|
|
|
$nl
|
|
|
|
"Vregs for a given instruction:"
|
|
|
|
{ $subsections
|
|
|
|
defs-vregs
|
|
|
|
temp-vregs
|
|
|
|
uses-vregs
|
|
|
|
} ;
|
|
|
|
|
|
|
|
ABOUT: "compiler.cfg.def-use"
|