On Fri, Oct 17, 2014 at 7:48 AM, Richard Sandiford <richard.sandif...@arm.com> wrote: > This is the main patch, to add new preferred_for_size and > preferred_for_speed attributes that can be used to selectively disable > alternatives when optimising for size or speed. As explained in the > docs, the new attributes are just optimisation hints and it is possible > that "size-only" alternatives will sometimes end up in a block that's > optimised for speed, or vice versa. > > The patch deals with code that directly accesses the enabled_attributes > mask and that ought to take size/speed choices into account. The next > patch deals with indirect uses. Note that I'm not making reload support > these attributes for hopefully obvious reasons :-) > > Richard > > > gcc/ > * doc/md.texi: Document "preferred_for_size" and "preferred_for_speed" > attributes. > * genattr.c (main): Handle "preferred_for_size" and > "preferred_for_speed" in the same way as "enabled". > * recog.h (bool_attr): New enum. > (target_recog): Replace x_enabled_alternatives with x_bool_attr_masks. > (get_preferred_alternatives, check_bool_attrs): Declare. > * recog.c (have_bool_attr, get_bool_attr, get_bool_attr_mask_uncached) > (get_bool_attr_mask, get_preferred_alternatives, check_bool_attrs): > New functions. > (get_enabled_alternatives): Use get_bool_attr_mask. > * ira-costs.c (record_reg_classes): Use get_preferred_alternatives > instead of recog_data.enabled_alternatives. > * ira.c (ira_setup_alts): Likewise. > * postreload.c (reload_cse_simplify_operands): Likewise. > * config/i386/i386.c (ix86_legitimate_combined_insn): Likewise. > * ira-lives.c (preferred_alternatives): New variable. > (process_bb_node_lives): Set it. > (check_and_make_def_conflict, make_early_clobber_and_input_conflicts) > (single_reg_class, ira_implicitly_set_insn_hard_regs): Use it instead > of recog_data.enabled_alternatives. > * lra-int.h (lra_insn_recog_data): Replace enabled_alternatives > to preferred_alternatives. > * lra-constraints.c (process_alt_operands): Update accordingly. > * lra.c (lra_set_insn_recog_data): Likewise. > (lra_update_insn_recog_data): Assert check_bool_attrs. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67029 -- H.J.