This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/34852] [4.3 Regression] Revision 131576 miscompiled 178.galgel



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]