Message ID | 000001cfe3a1$5e7c7bd0$1b757370$@arm.com |
---|---|
State | New |
Headers | show |
On Thu, Oct 9, 2014 at 11:14 AM, Zhenqiang Chen <zhenqiang.chen@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. Thanks, RIchard. > Thanks! > -Zhenqiang > > ChangeLog: > 2014-10-09 Zhenqiang Chen <zhenqiang.chen@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) > > >
On Thu, Oct 9, 2014 at 11:20 AM, Richard Biener <richard.guenther@gmail.com> wrote: > On Thu, Oct 9, 2014 at 11:14 AM, Zhenqiang Chen <zhenqiang.chen@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.chen@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) >> >> >>
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. */