mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 18:20:51 +08:00
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:
parent
b94097dc6f
commit
fb8a0e4094
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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 \
|
||||
|
Loading…
x
Reference in New Issue
Block a user