Goodbye REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED

* regs.h (struct reg_info_t): Delete freq_calls_crossed and
	throw_calls_crossed.
	(REG_FREQ_CALLS_CROSSED): Delete.
	(REG_N_THROWING_CALLS_CROSSED): Delete.
	* regstat.c (regstat_bb_compute_ri): Don't calculate
	REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED.
	(dump_reg_info): Don't print call cross frequency.
	* ira.c (combine_and_move_insns): Don't set REG_FREQ_CALLS_CROSSED
	and REG_N_THROWING_CALLS_CROSSED.

From-SVN: r235664
This commit is contained in:
Alan Modra 2016-04-30 09:31:52 +09:30 committed by Alan Modra
parent 91dabbb2c7
commit 725842d06f
4 changed files with 13 additions and 23 deletions

View file

@ -1,3 +1,15 @@
2016-04-30 Alan Modra <amodra@gmail.com>
* regs.h (struct reg_info_t): Delete freq_calls_crossed and
throw_calls_crossed.
(REG_FREQ_CALLS_CROSSED): Delete.
(REG_N_THROWING_CALLS_CROSSED): Delete.
* regstat.c (regstat_bb_compute_ri): Don't calculate
REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED.
(dump_reg_info): Don't print call cross frequency.
* ira.c (combine_and_move_insns): Don't set REG_FREQ_CALLS_CROSSED
and REG_N_THROWING_CALLS_CROSSED.
2016-04-30 Alan Modra <amodra@gmail.com> 2016-04-30 Alan Modra <amodra@gmail.com>
* regs.h (struct reg_info_t): Delete live_length. * regs.h (struct reg_info_t): Delete live_length.

View file

@ -3738,8 +3738,6 @@ combine_and_move_insns (void)
REG_BASIC_BLOCK (regno) = use_bb->index; REG_BASIC_BLOCK (regno) = use_bb->index;
REG_N_CALLS_CROSSED (regno) = 0; REG_N_CALLS_CROSSED (regno) = 0;
REG_FREQ_CALLS_CROSSED (regno) = 0;
REG_N_THROWING_CALLS_CROSSED (regno) = 0;
if (use_insn == BB_HEAD (use_bb)) if (use_insn == BB_HEAD (use_bb))
BB_HEAD (use_bb) = new_insn; BB_HEAD (use_bb) = new_insn;

View file

@ -106,8 +106,6 @@ struct reg_info_t
int freq; /* # estimated frequency (REG n) is used or set */ int freq; /* # estimated frequency (REG n) is used or set */
int deaths; /* # of times (REG n) dies */ int deaths; /* # of times (REG n) dies */
int calls_crossed; /* # of calls (REG n) is live across */ int calls_crossed; /* # of calls (REG n) is live across */
int freq_calls_crossed; /* # estimated frequency (REG n) crosses call */
int throw_calls_crossed; /* # of calls that may throw (REG n) is live across */
int basic_block; /* # of basic blocks (REG n) is used in */ int basic_block; /* # of basic blocks (REG n) is used in */
}; };
@ -162,12 +160,6 @@ extern size_t reg_info_p_size;
/* Indexed by N, gives number of CALL_INSNS across which (REG n) is live. */ /* Indexed by N, gives number of CALL_INSNS across which (REG n) is live. */
#define REG_N_CALLS_CROSSED(N) (reg_info_p[N].calls_crossed) #define REG_N_CALLS_CROSSED(N) (reg_info_p[N].calls_crossed)
#define REG_FREQ_CALLS_CROSSED(N) (reg_info_p[N].freq_calls_crossed)
/* Indexed by N, gives number of CALL_INSNS that may throw, across which
(REG n) is live. */
#define REG_N_THROWING_CALLS_CROSSED(N) (reg_info_p[N].throw_calls_crossed)
/* Indexed by n, gives number of basic block that (REG n) is used in. /* Indexed by n, gives number of basic block that (REG n) is used in.
If the value is REG_BLOCK_GLOBAL (-1), If the value is REG_BLOCK_GLOBAL (-1),

View file

@ -94,8 +94,7 @@ regstat_free_n_sets_and_refs (void)
/*---------------------------------------------------------------------------- /*----------------------------------------------------------------------------
REGISTER INFORMATION REGISTER INFORMATION
Process REG_N_DEATHS, REG_N_CALLS_CROSSED, Process REG_N_DEATHS, REG_N_CALLS_CROSSED, and REG_BASIC_BLOCK.
REG_N_THROWING_CALLS_CROSSED and REG_BASIC_BLOCK.
----------------------------------------------------------------------------*/ ----------------------------------------------------------------------------*/
@ -156,16 +155,10 @@ regstat_bb_compute_ri (basic_block bb, bitmap live)
/* Process the defs. */ /* Process the defs. */
if (CALL_P (insn)) if (CALL_P (insn))
{ {
bool can_throw = can_throw_internal (insn);
bool set_jump = (find_reg_note (insn, REG_SETJMP, NULL) != NULL); bool set_jump = (find_reg_note (insn, REG_SETJMP, NULL) != NULL);
EXECUTE_IF_SET_IN_BITMAP (live, 0, regno, bi) EXECUTE_IF_SET_IN_BITMAP (live, 0, regno, bi)
{ {
REG_N_CALLS_CROSSED (regno)++; REG_N_CALLS_CROSSED (regno)++;
REG_FREQ_CALLS_CROSSED (regno) += REG_FREQ_FROM_BB (bb);
REG_FREQ_CALLS_CROSSED (regno) =
MIN (REG_FREQ_CALLS_CROSSED (regno), REG_FREQ_MAX);
if (can_throw)
REG_N_THROWING_CALLS_CROSSED (regno)++;
/* We have a problem with any pseudoreg that lives /* We have a problem with any pseudoreg that lives
across the setjmp. ANSI says that if a user variable across the setjmp. ANSI says that if a user variable
@ -344,9 +337,6 @@ regstat_bb_compute_calls_crossed (unsigned int bb_index, bitmap live)
EXECUTE_IF_SET_IN_BITMAP (live, 0, regno, bi) EXECUTE_IF_SET_IN_BITMAP (live, 0, regno, bi)
{ {
REG_N_CALLS_CROSSED (regno)++; REG_N_CALLS_CROSSED (regno)++;
REG_FREQ_CALLS_CROSSED (regno) += REG_FREQ_FROM_BB (bb);
REG_FREQ_CALLS_CROSSED (regno) =
MIN (REG_FREQ_CALLS_CROSSED (regno), REG_FREQ_MAX);
} }
} }
@ -445,8 +435,6 @@ dump_reg_info (FILE *file)
fputs ("; crosses 1 call", file); fputs ("; crosses 1 call", file);
else if (REG_N_CALLS_CROSSED (i)) else if (REG_N_CALLS_CROSSED (i))
fprintf (file, "; crosses %d calls", REG_N_CALLS_CROSSED (i)); fprintf (file, "; crosses %d calls", REG_N_CALLS_CROSSED (i));
if (REG_FREQ_CALLS_CROSSED (i))
fprintf (file, "; crosses call with %d frequency", REG_FREQ_CALLS_CROSSED (i));
if (regno_reg_rtx[i] != NULL if (regno_reg_rtx[i] != NULL
&& PSEUDO_REGNO_BYTES (i) != UNITS_PER_WORD) && PSEUDO_REGNO_BYTES (i) != UNITS_PER_WORD)
fprintf (file, "; %d bytes", PSEUDO_REGNO_BYTES (i)); fprintf (file, "; %d bytes", PSEUDO_REGNO_BYTES (i));