diff options
author | Jan Hubicka <jh@suse.cz> | 2008-01-16 17:32:05 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2008-01-16 16:32:05 +0000 |
commit | a03c6d64f468ff2aaebcf2a87bb589938264bc38 (patch) | |
tree | e7a65553b87a99438635f0d5abcf71b9c8210b5c /gcc/regs.h | |
parent | 58c0b6524407250f48bb9c616943bf05a1ee6478 (diff) | |
download | gcc-a03c6d64f468ff2aaebcf2a87bb589938264bc38.zip gcc-a03c6d64f468ff2aaebcf2a87bb589938264bc38.tar.gz gcc-a03c6d64f468ff2aaebcf2a87bb589938264bc38.tar.bz2 |
re PR rtl-optimization/31396 (Inline code performance much worse than out-of-line)
PR rtl-optimization/31396
* regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
* cfg.c (dump_reg_info): Print it.
* regs.h (struct reg_info_t): add freq_calls_crossed.
(REG_FREQ_CALLS_CROSSED): New macro.
* global.c (global_alloc): Compute freq_calls_crossed for allocno.
(find_reg): Update call of CALLER_SAVE_PROFITABLE.
* regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
regmove_optimize): Update call crossed frequencies.
* local-alloc.c (struct qty): Add freq_calls_crossed.
(alloc_qty): Copute freq_calls_crossed.
(update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
(find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
* ra.h (struct allocno): Add freq_calls_crossed.
From-SVN: r131576
Diffstat (limited to 'gcc/regs.h')
-rw-r--r-- | gcc/regs.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -115,6 +115,7 @@ struct reg_info_t int deaths; /* # of times (REG n) dies */ int live_length; /* # of instructions (REG n) is live */ 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 */ }; @@ -172,6 +173,7 @@ extern size_t reg_info_p_size; /* 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_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. */ |