> @@ -2618,6 +2643,16 @@ fill_slots_from_thread (rtx_jump_insn *insn, rtx
> condition, lose = 1;
>        mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
>        mark_referenced_resources (trial, &needed, true);
> +      if (filter_flags)
> +     {
> +       mark_set_resources (trial, &fset, 0, MARK_SRC_DEST_CALL);
> +
> +       /* Groups of flags-register setters with users should not
> +          affect opportunities to move flags-register-setting insns
> +          (clobbers) into the delay-slot.  */
> +       CLEAR_HARD_REG_BIT (needed.regs, targetm.flags_regnum);
> +       CLEAR_HARD_REG_BIT (fset.regs, targetm.flags_regnum);
> +     }

Don't you need to put the new block before mark_referenced_resources (as I did 
in fill_simple_delay_slots) in case the needed insn reads the flags register?

-- 
Eric Botcazou


Reply via email to