This is the mail archive of the
mailing list for the GCC project.
[SH, committed] Adjust default branch cost
- From: Oleg Endo <oleg dot endo at t-online dot de>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 17 May 2014 00:26:16 +0200
- Subject: [SH, committed] Adjust default branch cost
- Authentication-results: sourceware.org; auth=none
I've noticed that on e.g. SH2 and SH2A it seems to be better to set the
branch cost = 2, as it is done for the SH4 variants. This results in
overall slightly smaller code (according to CSiBE) and better
utilization of the various T bit patterns.
Tested on rev 210305 with
make -k check RUNTESTFLAGS="--target_board=sh-sim
and no new failures.
Committed as rev 210534.
* config/sh/sh.c (sh_option_override): Set branch cost to 2 for all
--- gcc/config/sh/sh.c (revision 210301)
+++ gcc/config/sh/sh.c (working copy)
@@ -904,15 +904,16 @@
sh_divsi3_libfunc = "__sdivsi3_1";
sh_divsi3_libfunc = "__sdivsi3";
if (sh_branch_cost == -1)
- sh_branch_cost = 1;
/* The SH1 does not have delay slots, hence we get a pipeline stall
at every branch. The SH4 is superscalar, so the single delay slot
- is not sufficient to keep both pipelines filled. */
- if (! TARGET_SH2 || TARGET_HARD_SH4)
- sh_branch_cost = 2;
+ is not sufficient to keep both pipelines filled.
+ In any case, set the default branch cost to '2', as it results in
+ slightly overall smaller code and also enables some if conversions
+ that are required for matching special T bit related insns. */
+ sh_branch_cost = 2;
/* Set -mzdcbranch for SH4 / SH4A if not otherwise specified by the user. */