This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 2/5] Add preferred_for_{size,speed} attributes
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, ubizjak at gmail dot com, markus at trippelsdorf dot de, Ganesh dot Gopalasubramanian at amd dot com, richard dot sandiford at arm dot com
- Date: Tue, 21 Oct 2014 10:56:57 -0400
- Subject: Re: [PATCH 2/5] Add preferred_for_{size,speed} attributes
- Authentication-results: sourceware.org; auth=none
- References: <87bnpabvvx dot fsf at e105548-lin dot cambridge dot arm dot com> <87zjcuah0u dot fsf at e105548-lin dot cambridge dot arm dot com>
On 10/17/2014 10:48 AM, Richard Sandiford 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.
>
>
Thanks for picking this up and making a systematic solution, Richard.
All RA-related changes are ok for me. I guess other changes
(genattrr.c, recog.[ch], md.texi and i386.c) are obvious but I have no
power to approve them.