------- Comment #5 from hjl dot tools at gmail dot com 2008-01-20 16:34 ------- Should we also update REG_FREQ_CALLS_CROSSED whenever REG_N_CALLS_CROSSED is updated? In regmove.c, there are
delete_insn (q); INC_REG_N_SETS (REGNO (src), -1); REG_N_CALLS_CROSSED (REGNO (src)) -= num_calls2; REG_LIVE_LENGTH (REGNO (src)) -= s_length2; insn_const = 0; ... if (src_note) { /* Move the death note for SRC from INSN to P. */ if (! overlap) remove_note (insn, src_note); XEXP (src_note, 1) = REG_NOTES (p); REG_NOTES (p) = src_note; REG_N_CALLS_CROSSED (REGNO (src)) += s_num_calls; } INC_REG_N_SETS (REGNO (src), 1); INC_REG_N_SETS (REGNO (dst), -1); REG_N_CALLS_CROSSED (REGNO (dst)) -= num_calls; There is we only update REG_N_CALLS_CROSSED, not REG_FREQ_CALLS_CROSSED. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34852