On 10/17/2014 10:51 AM, Richard Sandiford wrote:
> After the previous patch there are cases where we want to constrain
> operands to any enabled alternative and cases where we want to also take
> size/speed preferences into account. The former applies when
> constraining an existing instruction (which might originally have been
> in a block with a different size/speed choice) or when making global
> decisions. The latter applies when evaluating a potential optimisation.
>
> This patch therefore passes the mask of allowable alternatives as a
> parameter to constrain_operands.
>
> Richard
>
RA parts look good for me too.
> gcc/
> * recog.h (constrain_operands): Add an alternative_mask parameter.
> (constrain_operands_cached): Likewise.
> (get_preferred_alternatives): Declare new form.
> * recog.c (get_preferred_alternatives): New bb-taking instance.
> (constrain_operands): Take the set of available alternatives as
> a parameter.
> (check_asm_operands, insn_invalid_p, extract_constrain_insn)
> (extract_constrain_insn_cached): Update calls to constrain_operands.
> * caller-save.c (reg_save_code): Likewise.
> * ira.c (setup_prohibited_mode_move_regs): Likewise.
> * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
> * ree.c (combine_reaching_defs): Likewise.
> * reload.c (can_reload_into): Likewise.
> * reload1.c (reload, reload_as_needed, inc_for_reload): Likewise.
> (gen_reload_chain_without_interm_reg_p, emit_input_reload_insns)
> (emit_insn_if_valid_for_reload): Likewise.
> * reorg.c (fill_slots_from_thread): Likewise.
> * config/i386/i386.c (ix86_attr_length_address_default): Likewise.
> * config/pa/pa.c (pa_can_combine_p): Likewise.
> * config/rl78/rl78.c (insn_ok_now): Likewise.
> * config/sh/sh.md (define_peephole2): Likewise.
> * final.c (final_scan_insn): Update call to constrain_operands_cached.
>