This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, PR60738] More LRA split for regno conflicting with single reg class operand
- From: Steven Bosscher <stevenb dot gcc at gmail dot com>
- To: Wei Mi <wmi at google dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, David Li <davidxl at google dot com>, Vladimir Makarov <vmakarov at redhat dot com>
- Date: Mon, 28 Apr 2014 09:57:10 +0200
- Subject: Re: [PATCH, PR60738] More LRA split for regno conflicting with single reg class operand
- Authentication-results: sourceware.org; auth=none
- References: <CA+4CFy76kH8XGTHTdd1dCe2GatkAh=wjXCkkCin1_-Q3guH_3Q at mail dot gmail dot com>
On Sat, Apr 26, 2014 at 5:35 AM, Wei Mi wrote:
> Index: ira-lives.c
> ===================================================================
> --- ira-lives.c (revision 209253)
> +++ ira-lives.c (working copy)
> @@ -1025,7 +1025,11 @@ process_single_reg_class_operands (bool
> {
> ira_object_t obj = ira_object_id_map[px];
> a = OBJECT_ALLOCNO (obj);
> - if (a != operand_a)
> + /* If a is much hotter in some other region, don't add reg class
> + cl into its conflict hardreg set. Let lra_split to do splitting
> + here for operand_a. */
> + if (a != operand_a
> + && (LRA_SPLIT_FREQ_RATIO * freq >= a->freq))
> {
> /* We could increase costs of A instead of making it
> conflicting with the hard register. But it works worse
AFAICT this path is not LRA specific, so your patch may break ports
still relying on reload.
Ciao!
Steven