gcc-8.3/gcc/ira_build()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c8750579]
#backlinks
*説明 [#pff0542d]
-パス: [[gcc-8.3/gcc/ira-build.c]]
-FIXME: これは何?
--説明
**引数 [#x2c6ba23]
-なし
**返り値 [#l926a0c3]
-bool
--
**参考 [#dead0438]
*実装 [#ufcf868d]
/* Create a internal representation (IR) for IRA (allocn...
loop tree nodes). The function returns TRUE if we ge...
structure (besides nodes representing all function an...
blocks) for regional allocation. A true return means...
really need to flatten IR before the reload. */
bool
ira_build (void)
{
bool loops_p;
df_analyze ();
initiate_cost_vectors ();
initiate_allocnos ();
initiate_prefs ();
initiate_copies ();
create_loop_tree_nodes ();
form_loop_tree ();
create_allocnos ();
ira_costs ();
create_allocno_objects ();
ira_create_allocno_live_ranges ();
remove_unnecessary_regions (false);
ira_compress_allocno_live_ranges ();
update_bad_spill_attribute ();
-
--[[gcc-8.3/gcc/df_analyze()]]
--[[gcc-8.3/gcc/initiate_cost_vectors()]]
--[[gcc-8.3/gcc/initiate_allocnos()]]
--[[gcc-8.3/gcc/initiate_prefs()]]
--[[gcc-8.3/gcc/initiate_copies()]]
--[[gcc-8.3/gcc/create_loop_tree_nodes()]]
--[[gcc-8.3/gcc/form_loop_tree()]]
--[[gcc-8.3/gcc/create_allocnos()]]
--[[gcc-8.3/gcc/ira_costs()]]
--[[gcc-8.3/gcc/create_allocno_objects()]]
--[[gcc-8.3/gcc/ira_create_allocno_live_ranges()]]
--[[gcc-8.3/gcc/remove_unnecessary_regions()]]
--[[gcc-8.3/gcc/ira_compress_allocno_live_ranges()]]
--[[gcc-8.3/gcc/update_bad_spill_attribute()]]
loops_p = more_one_region_p ();
if (loops_p)
{
propagate_allocno_info ();
create_caps ();
}
ira_tune_allocno_costs ();
#ifdef ENABLE_IRA_CHECKING
check_allocno_creation ();
#endif
-
--[[gcc-8.3/gcc/more_one_region_p()]]
--[[gcc-8.3/gcc/propagate_allocno_info()]]
--[[gcc-8.3/gcc/create_caps()]]
--[[gcc-8.3/gcc/ira_tune_allocno_costs()]]
--[[gcc-8.3/gcc/check_allocno_creation()]]
setup_min_max_allocno_live_range_point ();
sort_conflict_id_map ();
setup_min_max_conflict_allocno_ids ();
ira_build_conflicts ();
update_conflict_hard_reg_costs ();
-
--[[gcc-8.3/gcc/setup_min_max_allocno_live_range_point()]]
--[[gcc-8.3/gcc/sort_conflict_id_map()]]
--[[gcc-8.3/gcc/setup_min_max_conflict_allocno_ids()]]
--[[gcc-8.3/gcc/ira_build_conflicts()]]
--[[gcc-8.3/gcc/update_conflict_hard_reg_costs()]]
if (! ira_conflicts_p)
{
ira_allocno_t a;
ira_allocno_iterator ai;
/* Remove all regions but root one. */
if (loops_p)
{
remove_unnecessary_regions (true);
loops_p = false;
}
/* We don't save hard registers around calls for f...
-- add caller clobbered registers as conflicting ones to
allocno crossing calls. */
FOR_EACH_ALLOCNO (a, ai)
if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
ior_hard_reg_conflicts (a, &call_used_reg_set);
}
-
--[[gcc-8.3/gcc/ira_allocno_t]]
--[[gcc-8.3/gcc/ira_allocno_iterator]]
--[[gcc-8.3/gcc/remove_unnecessary_regions()]]
--[[gcc-8.3/gcc/FOR_EACH_ALLOCNO()]]
--[[gcc-8.3/gcc/ALLOCNO_CALLS_CROSSED_NUM()]]
--[[gcc-8.3/gcc/ior_hard_reg_conflicts()]]
if (internal_flag_ira_verbose > 2 && ira_dump_file != ...
print_copies (ira_dump_file);
if (internal_flag_ira_verbose > 2 && ira_dump_file != ...
print_prefs (ira_dump_file);
-
--[[gcc-8.3/gcc/print_copies()]]
--[[gcc-8.3/gcc/print_prefs()]]
if (internal_flag_ira_verbose > 0 && ira_dump_file != ...
{
int n, nr, nr_big;
ira_allocno_t a;
live_range_t r;
ira_allocno_iterator ai;
-
--[[gcc-8.3/gcc/ira_allocno_t]]
--[[gcc-8.3/gcc/live_range_t]]
--[[gcc-8.3/gcc/ira_allocno_iterator]]
n = 0;
nr = 0;
nr_big = 0;
FOR_EACH_ALLOCNO (a, ai)
{
int j, nobj = ALLOCNO_NUM_OBJECTS (a);
if (nobj > 1)
nr_big++;
for (j = 0; j < nobj; j++)
{
ira_object_t obj = ALLOCNO_OBJECT (a, j);
n += OBJECT_NUM_CONFLICTS (obj);
for (r = OBJECT_LIVE_RANGES (obj); r != NULL; r =...
nr++;
}
}
fprintf (ira_dump_file, " regions=%d, blocks=%d, ...
current_loops == NULL ? 1 : number_of_loops (cfu...
n_basic_blocks_for_fn (cfun), ira_max_point);
fprintf (ira_dump_file,
" allocnos=%d (big %d), copies=%d, conflicts=...
ira_allocnos_num, nr_big, ira_copies_num, n, nr);
}
-
--[[gcc-8.3/gcc/FOR_EACH_ALLOCNO()]]
--[[gcc-8.3/gcc/ALLOCNO_NUM_OBJECTS()]]
--[[gcc-8.3/gcc/ALLOCNO_OBJECT()]]
--[[gcc-8.3/gcc/OBJECT_NUM_CONFLICTS()]]
--[[gcc-8.3/gcc/OBJECT_LIVE_RANGES()]]
--[[gcc-8.3/gcc/number_of_loops()]]
--[[gcc-8.3/gcc/n_basic_blocks_for_fn()]]
return loops_p;
}
*コメント [#s3bda0d8]
終了行:
*参照元 [#c8750579]
#backlinks
*説明 [#pff0542d]
-パス: [[gcc-8.3/gcc/ira-build.c]]
-FIXME: これは何?
--説明
**引数 [#x2c6ba23]
-なし
**返り値 [#l926a0c3]
-bool
--
**参考 [#dead0438]
*実装 [#ufcf868d]
/* Create a internal representation (IR) for IRA (allocn...
loop tree nodes). The function returns TRUE if we ge...
structure (besides nodes representing all function an...
blocks) for regional allocation. A true return means...
really need to flatten IR before the reload. */
bool
ira_build (void)
{
bool loops_p;
df_analyze ();
initiate_cost_vectors ();
initiate_allocnos ();
initiate_prefs ();
initiate_copies ();
create_loop_tree_nodes ();
form_loop_tree ();
create_allocnos ();
ira_costs ();
create_allocno_objects ();
ira_create_allocno_live_ranges ();
remove_unnecessary_regions (false);
ira_compress_allocno_live_ranges ();
update_bad_spill_attribute ();
-
--[[gcc-8.3/gcc/df_analyze()]]
--[[gcc-8.3/gcc/initiate_cost_vectors()]]
--[[gcc-8.3/gcc/initiate_allocnos()]]
--[[gcc-8.3/gcc/initiate_prefs()]]
--[[gcc-8.3/gcc/initiate_copies()]]
--[[gcc-8.3/gcc/create_loop_tree_nodes()]]
--[[gcc-8.3/gcc/form_loop_tree()]]
--[[gcc-8.3/gcc/create_allocnos()]]
--[[gcc-8.3/gcc/ira_costs()]]
--[[gcc-8.3/gcc/create_allocno_objects()]]
--[[gcc-8.3/gcc/ira_create_allocno_live_ranges()]]
--[[gcc-8.3/gcc/remove_unnecessary_regions()]]
--[[gcc-8.3/gcc/ira_compress_allocno_live_ranges()]]
--[[gcc-8.3/gcc/update_bad_spill_attribute()]]
loops_p = more_one_region_p ();
if (loops_p)
{
propagate_allocno_info ();
create_caps ();
}
ira_tune_allocno_costs ();
#ifdef ENABLE_IRA_CHECKING
check_allocno_creation ();
#endif
-
--[[gcc-8.3/gcc/more_one_region_p()]]
--[[gcc-8.3/gcc/propagate_allocno_info()]]
--[[gcc-8.3/gcc/create_caps()]]
--[[gcc-8.3/gcc/ira_tune_allocno_costs()]]
--[[gcc-8.3/gcc/check_allocno_creation()]]
setup_min_max_allocno_live_range_point ();
sort_conflict_id_map ();
setup_min_max_conflict_allocno_ids ();
ira_build_conflicts ();
update_conflict_hard_reg_costs ();
-
--[[gcc-8.3/gcc/setup_min_max_allocno_live_range_point()]]
--[[gcc-8.3/gcc/sort_conflict_id_map()]]
--[[gcc-8.3/gcc/setup_min_max_conflict_allocno_ids()]]
--[[gcc-8.3/gcc/ira_build_conflicts()]]
--[[gcc-8.3/gcc/update_conflict_hard_reg_costs()]]
if (! ira_conflicts_p)
{
ira_allocno_t a;
ira_allocno_iterator ai;
/* Remove all regions but root one. */
if (loops_p)
{
remove_unnecessary_regions (true);
loops_p = false;
}
/* We don't save hard registers around calls for f...
-- add caller clobbered registers as conflicting ones to
allocno crossing calls. */
FOR_EACH_ALLOCNO (a, ai)
if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
ior_hard_reg_conflicts (a, &call_used_reg_set);
}
-
--[[gcc-8.3/gcc/ira_allocno_t]]
--[[gcc-8.3/gcc/ira_allocno_iterator]]
--[[gcc-8.3/gcc/remove_unnecessary_regions()]]
--[[gcc-8.3/gcc/FOR_EACH_ALLOCNO()]]
--[[gcc-8.3/gcc/ALLOCNO_CALLS_CROSSED_NUM()]]
--[[gcc-8.3/gcc/ior_hard_reg_conflicts()]]
if (internal_flag_ira_verbose > 2 && ira_dump_file != ...
print_copies (ira_dump_file);
if (internal_flag_ira_verbose > 2 && ira_dump_file != ...
print_prefs (ira_dump_file);
-
--[[gcc-8.3/gcc/print_copies()]]
--[[gcc-8.3/gcc/print_prefs()]]
if (internal_flag_ira_verbose > 0 && ira_dump_file != ...
{
int n, nr, nr_big;
ira_allocno_t a;
live_range_t r;
ira_allocno_iterator ai;
-
--[[gcc-8.3/gcc/ira_allocno_t]]
--[[gcc-8.3/gcc/live_range_t]]
--[[gcc-8.3/gcc/ira_allocno_iterator]]
n = 0;
nr = 0;
nr_big = 0;
FOR_EACH_ALLOCNO (a, ai)
{
int j, nobj = ALLOCNO_NUM_OBJECTS (a);
if (nobj > 1)
nr_big++;
for (j = 0; j < nobj; j++)
{
ira_object_t obj = ALLOCNO_OBJECT (a, j);
n += OBJECT_NUM_CONFLICTS (obj);
for (r = OBJECT_LIVE_RANGES (obj); r != NULL; r =...
nr++;
}
}
fprintf (ira_dump_file, " regions=%d, blocks=%d, ...
current_loops == NULL ? 1 : number_of_loops (cfu...
n_basic_blocks_for_fn (cfun), ira_max_point);
fprintf (ira_dump_file,
" allocnos=%d (big %d), copies=%d, conflicts=...
ira_allocnos_num, nr_big, ira_copies_num, n, nr);
}
-
--[[gcc-8.3/gcc/FOR_EACH_ALLOCNO()]]
--[[gcc-8.3/gcc/ALLOCNO_NUM_OBJECTS()]]
--[[gcc-8.3/gcc/ALLOCNO_OBJECT()]]
--[[gcc-8.3/gcc/OBJECT_NUM_CONFLICTS()]]
--[[gcc-8.3/gcc/OBJECT_LIVE_RANGES()]]
--[[gcc-8.3/gcc/number_of_loops()]]
--[[gcc-8.3/gcc/n_basic_blocks_for_fn()]]
return loops_p;
}
*コメント [#s3bda0d8]
ページ名: