https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92213

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
/* The transfer function used by the DF equation solver to propagate
   live info through block with BB_INDEX according to the following
   equation:

     bb.livein = (bb.liveout - bb.kill) OR bb.gen
*/
static bool 
live_trans_fun (int bb_index)
{
  basic_block bb = get_bb_data_by_index (bb_index)->bb;
  bitmap bb_liveout = df_get_live_out (bb);
  bitmap bb_livein = df_get_live_in (bb);
  bb_data_t bb_info = get_bb_data (bb);

  bitmap_and_compl (&temp_bitmap, bb_liveout, &all_hard_regs_bitmap);
^^^^^^^^^^^^^^^^^^^^
This does "temp_bitmap = bb_liveout & ~all_hard_regs_bitmap" which
clears all hard live out registers.

  return bitmap_ior_and_compl (bb_livein, &bb_info->gen_pseudos,
                               &temp_bitmap, &bb_info->killed_pseudos);
}

Reply via email to