re PR rtl-optimization/64317 (Ineffective allocation of PIC base register)

2015-02-27  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/64317
	* params.def (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
	* params.h (LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
	* lra-constraints.c: Include "params.h".
	(EBB_PROBABILITY_CUTOFF): Use
	LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF.
	(lra_inheritance): Use '<' instead of '<=' for
	EBB_PROBABILITY_CUTOFF.
	* doc/invoke.texi (lra-inheritance-ebb-probability-cutoff):
	Document change.

From-SVN: r221070
This commit is contained in:
Vladimir Makarov 2015-02-27 22:02:05 +00:00 committed by Vladimir Makarov
parent b94097dc6f
commit fb8a0e4094
5 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,16 @@
2015-02-27 Vladimir Makarov <vmakarov@redhat.com>
PR target/64317
* params.def (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
* params.h (LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
* lra-constraints.c: Include "params.h".
(EBB_PROBABILITY_CUTOFF): Use
LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF.
(lra_inheritance): Use '<' instead of '<=' for
EBB_PROBABILITY_CUTOFF.
* doc/invoke.texi (lra-inheritance-ebb-probability-cutoff):
Document change.
2015-02-27 Martin Liska <mliska@suse.cz>
* ipa-icf.h (struct symbol_compare_hashmap_traits): Add missing

View File

@ -10570,6 +10570,14 @@ by this parameter. The default value of the parameter is 2, which is
the minimal number of registers needed by typical instructions.
This value is the best found from numerous experiments.
@item lra-inheritance-ebb-probability-cutoff
LRA tries to reuse values reloaded in registers in subsequent insns.
This optimization is called inheritance. EBB is used as a region to
do this optimization. The parameter defines a minimal fall-through
edge probability in percentage used to add BB to inheritance EBB in
LRA. The default value of the parameter is 40. The value was chosen
from numerous runs of SPEC2000 on x86-64.
@item loop-invariant-max-bbs-in-loop
Loop invariant motion can be very expensive, both in compilation time and
in amount of needed compile-time memory, with very large loops. Loops

View File

@ -154,6 +154,7 @@
#include "df.h"
#include "ira.h"
#include "rtl-error.h"
#include "params.h"
#include "lra-int.h"
/* Value of LRA_CURR_RELOAD_NUM at the beginning of BB of the current
@ -5694,7 +5695,8 @@ inherit_in_ebb (rtx_insn *head, rtx_insn *tail)
/* This value affects EBB forming. If probability of edge from EBB to
a BB is not greater than the following value, we don't add the BB
to EBB. */
#define EBB_PROBABILITY_CUTOFF ((REG_BR_PROB_BASE * 50) / 100)
#define EBB_PROBABILITY_CUTOFF \
((REG_BR_PROB_BASE * LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF) / 100)
/* Current number of inheritance/split iteration. */
int lra_inheritance_iter;
@ -5740,7 +5742,7 @@ lra_inheritance (void)
e = find_fallthru_edge (bb->succs);
if (! e)
break;
if (e->probability <= EBB_PROBABILITY_CUTOFF)
if (e->probability < EBB_PROBABILITY_CUTOFF)
break;
bb = bb->next_bb;
}

View File

@ -836,6 +836,11 @@ DEFPARAM (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS,
"The max number of reload pseudos which are considered during spilling a non-reload pseudo",
500, 0, 0)
DEFPARAM (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF,
"lra-inheritance-ebb-probability-cutoff",
"Minimal fall-through edge probability in percentage used to add BB to inheritance EEB in LRA",
40, 0, 100)
/* Switch initialization conversion will refuse to create arrays that are
bigger than this parameter times the number of switch branches. */

View File

@ -202,6 +202,8 @@ extern void init_param_values (int *params);
PARAM_VALUE (PARAM_IRA_LOOP_RESERVED_REGS)
#define LRA_MAX_CONSIDERED_RELOAD_PSEUDOS \
PARAM_VALUE (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS)
#define LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF \
PARAM_VALUE (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF)
#define SWITCH_CONVERSION_BRANCH_RATIO \
PARAM_VALUE (PARAM_SWITCH_CONVERSION_BRANCH_RATIO)
#define LOOP_INVARIANT_MAX_BBS_IN_LOOP \