#include "ctrump/ast/ast.h"
#include "ctrump/common/dll.h"
Go to the source code of this file.
Functions | |
CTRUMP_EXTDEF int | ctrump_analyze (struct ctrump_translation_unit *unit, const struct ctrump_abi *abi, struct ctrump_mempool *pool, struct ctrump_build_cfg_error *error, int num_ast, int id_base) |
プログラムを解析する 解析結果は unit の指すツリーの中に反映される |
現在のCTRUMPで行われる解析は、
1. データフロー解析(cfg.c) 2. ループ内でのメモリアクセスの解析(loop.c) 3. ループ依存性解析(deptest.c)
のみっつ
1. データフロー解析
CFGを作る。 生存性を解析後、SSA解析して、PDG(Program Dependence Graph)をつくる PDGは、各変数の定義がどこから来たかを示すグラフで、 ctrumpでは、ctrump_pdg_nodeと、ctrump_exprの組み合わせで構成される
これが終わると
2. ループ内でのメモリアクセスの解析
ループ中でのメモリアクセスから、 メモリアクセスの配列、添字、インデクスを抜き出す
3. ループ依存性解析
ループ中の配列アクセスをもとに、各繰り返し点での 依存ベクトルを求める
Definition in file analyze.h.
CTRUMP_EXTDEF int ctrump_analyze | ( | struct ctrump_translation_unit * | unit, | |
const struct ctrump_abi * | abi, | |||
struct ctrump_mempool * | pool, | |||
struct ctrump_build_cfg_error * | error, | |||
int | num_ast, | |||
int | id_base | |||
) |
プログラムを解析する 解析結果は unit の指すツリーの中に反映される
Definition at line 335 of file analyze.c.
References build_loop_tree_func(), ctrump_fundef::cfg, ctrump_extdecl::code, ctrump_build_cfg(), CTRUMP_EXT_FUNCTION_DEFINITION, ctrump_mempool_alloc, ctrump_mempool_destroy(), ctrump_mempool_init(), ctrump_varray_copy(), ctrump_varray_discard(), ctrump_varray_init(), ctrump_translation_unit::decls, ctrump_extdecl::func_def, analyze_allocator::id, ctrump_cfg::id, ctrump_cfg::loop_tree_roots, ctrump_varray::nelem, ctrump_translation_unit::num_decl, ctrump_cfg::num_loop, analyze_allocator::pool, and ctrump_extdecl::u.
Referenced by cfront_parse().