[PATCH] allowing fwprop to propagate subregs

Paolo Bonzini bonzini@gnu.org
Mon Mar 19 16:35:00 GMT 2012


Il 19/03/2012 17:07, Ulrich Weigand ha scritto:
> Hello,
> 
> now that the apply_distributive_law change is in, I'd like to pick up
> Richard's original patch, see discussion here:
> http://gcc.gnu.org/ml/gcc-patches/2011-09/msg00852.html
> 
> The version below integrates all requests for changes that were raised.
> It's been part of Linaro GCC releases in this form for a while with no
> problem reported.  We see performance improvements in several libav loops,
> as described in Richard's original mail.  We've seen no test case so far
> where this patch (against current baseline) has shown any significant
> performance regressions.
> 
> Re-tested on arm-linux-gnueabi and i386-linux-gnu with no regressions.
> 
> OK for mainline?
> 
> Bye,
> Ulrich
> 
> 
> ChangeLog:
> 
> 	* fwprop.c (propagate_rtx): Also set PR_CAN_APPEAR for subregs.
> 
> === modified file 'gcc/fwprop.c'
> --- gcc/fwprop.c	2011-12-19 22:05:28 +0000
> +++ gcc/fwprop.c	2012-02-22 11:57:19 +0000
> @@ -664,7 +664,12 @@
>      return NULL_RTX;
>  
>    flags = 0;
> -  if (REG_P (new_rtx) || CONSTANT_P (new_rtx))
> +  if (REG_P (new_rtx)
> +      || CONSTANT_P (new_rtx)
> +      || (GET_CODE (new_rtx) == SUBREG
> +	  && REG_P (SUBREG_REG (new_rtx))
> +	  && (GET_MODE_SIZE (mode)
> +	      <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (new_rtx))))))
>      flags |= PR_CAN_APPEAR;
>    if (!for_each_rtx (&new_rtx, varying_mem_p, NULL))
>      flags |= PR_HANDLE_MEM;
> 

I cannot approve it, but it looks good.

Paolo



More information about the Gcc-patches mailing list