On Thu, Oct 9, 2014 at 11:20 AM, Richard Biener <richard.guent...@gmail.com> wrote: > On Thu, Oct 9, 2014 at 11:14 AM, Zhenqiang Chen <zhenqiang.c...@arm.com> > wrote: >> Hi, >> >> The are two implementations of seq_cost. The function bodies are exactly the >> same. The patch removes one of them and make the other global. >> >> Bootstrap and no make check regression on X86-64. >> >> OK for trunk? > > The prototype should go to cfgloopanal.c.
Err - cfgloopanal.h of course ;) Or rather the function sounds misplaced in cfgloopanal.c. Richard. > > Thanks, > RIchard. > >> Thanks! >> -Zhenqiang >> >> ChangeLog: >> 2014-10-09 Zhenqiang Chen <zhenqiang.c...@arm.com> >> >> * cfgloopanal.c (seq_cost): Make it global. >> * rtl.h (seq_cost): New prototype. >> * tree-ssa-loop-ivopts.c (seq_cost): Delete. >> >> diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c >> index 7ea1a5f..dd37aa0 100644 >> --- a/gcc/cfgloopanal.c >> +++ b/gcc/cfgloopanal.c >> @@ -304,7 +304,7 @@ get_loop_level (const struct loop *loop) >> >> /* Returns estimate on cost of computing SEQ. */ >> >> -static unsigned >> +unsigned >> seq_cost (const rtx_insn *seq, bool speed) >> { >> unsigned cost = 0; >> diff --git a/gcc/rtl.h b/gcc/rtl.h >> index e73f731..b697417 100644 >> --- a/gcc/rtl.h >> +++ b/gcc/rtl.h >> @@ -2921,6 +2921,7 @@ extern rtx_insn *find_first_parameter_load (rtx_insn >> *, rtx_insn *); >> extern bool keep_with_call_p (const rtx_insn *); >> extern bool label_is_jump_target_p (const_rtx, const rtx_insn *); >> extern int insn_rtx_cost (rtx, bool); >> +extern unsigned seq_cost (const rtx_insn *, bool); >> >> /* Given an insn and condition, return a canonical description of >> the test being made. */ >> diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c >> index 400798a..087ca26 100644 >> --- a/gcc/tree-ssa-loop-ivopts.c >> +++ b/gcc/tree-ssa-loop-ivopts.c >> @@ -2842,26 +2842,6 @@ get_use_iv_cost (struct ivopts_data *data, struct >> iv_use *use, >> return NULL; >> } >> >> -/* Returns estimate on cost of computing SEQ. */ >> - >> -static unsigned >> -seq_cost (rtx_insn *seq, bool speed) >> -{ >> - unsigned cost = 0; >> - rtx set; >> - >> - for (; seq; seq = NEXT_INSN (seq)) >> - { >> - set = single_set (seq); >> - if (set) >> - cost += set_src_cost (SET_SRC (set), speed); >> - else >> - cost++; >> - } >> - >> - return cost; >> -} >> - >> /* Produce DECL_RTL for object obj so it looks like it is stored in memory. >> */ >> static rtx >> produce_memory_decl_rtl (tree obj, int *regno) >> >> >>