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); }