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