From ed548cec9d8efe8ef742225c39f5d84aba4be81b Mon Sep 17 00:00:00 2001 From: Diachkov Ilia WX1215920 Date: Wed, 20 Dec 2023 13:53:47 +0300 Subject: [PATCH 3/5] [IPA] Fix fails on checked build and comments from review --- gcc/ipa-prefetch.c | 24 ++++++++++++++++++++++-- gcc/params.opt | 4 ++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/gcc/ipa-prefetch.c b/gcc/ipa-prefetch.c index 93483a6e8..d8bb9a251 100644 --- a/gcc/ipa-prefetch.c +++ b/gcc/ipa-prefetch.c @@ -167,6 +167,7 @@ analyse_cgraph () } /* TODO: maybe remove loop info here. */ + n->get_body (); push_cfun (DECL_STRUCT_FUNCTION (n->decl)); calculate_dominance_info (CDI_DOMINATORS); loop_optimizer_init (LOOPS_NORMAL); @@ -1540,9 +1541,28 @@ optimize_function (cgraph_node *n, function *fn) return 0; } else if (dump_file) - fprintf (dump_file, "Dominator bb %d for MRs\n", dom_bb->index); + { + fprintf (dump_file, "Dominator bb %d for MRs:\n", dom_bb->index); + gimple_dump_bb (dump_file, dom_bb, 0, dump_flags); + fprintf (dump_file, "\n"); + } + + /* Try to find comp_mr's stmt in the dominator bb. */ + gimple *last_used = NULL; + for (gimple_stmt_iterator si = gsi_last_bb (dom_bb); !gsi_end_p (si); + gsi_prev (&si)) + if (comp_mr->stmts[0] == gsi_stmt (si)) + { + last_used = gsi_stmt (si); + if (dump_file) + { + fprintf (dump_file, "Last used stmt in dominator bb:\n"); + print_gimple_stmt (dump_file, last_used, 0); + } + break; + } - split_block (dom_bb, (gimple *) NULL); + split_block (dom_bb, last_used); gimple_stmt_iterator gsi = gsi_last_bb (dom_bb); /* Create new inc var. Insert new_var = old_var + step * factor. */ diff --git a/gcc/params.opt b/gcc/params.opt index ef7bea311..76ae925fd 100644 --- a/gcc/params.opt +++ b/gcc/params.opt @@ -251,8 +251,8 @@ Common Joined UInteger Var(param_ipa_prefetch_distance_factor) Init(4) Param Opt The factor represents the number of inductive variable incrementations to evaluate an indirect memory address for IPA prefetch. -param=ipa-prefetch-locality= -Common Joined UInteger Var(param_ipa_prefetch_locality) Init(3) Param Optimization -The flag represents temporal locality values in the following way: 0:pstl1strm, 1:pstl3keep, 2:pstl2keep, 3:pstl1keep. +Common Joined UInteger Var(param_ipa_prefetch_locality) Init(3) IntegerRange(0, 3) Param Optimization +The flag represents temporal locality value between 0 and 3, the higher value means the higher temporal locality in the data. -param=ira-loop-reserved-regs= Common Joined UInteger Var(param_ira_loop_reserved_regs) Init(2) Param Optimization -- 2.33.0