On Fri, May 15, 2015 at 10:40:48PM -0400, Hans-Peter Nilsson wrote:
> I confess the test-case-"guarded" addi pattern should have been
> expressed with a shift in addition to the multiplication.

But they wouldn't ever match so they might very well have bitrotted
by now :-(

> ("In
> addition to" as the canonically wrong one used to be the
> combine-matching pattern; I'm not sure I should really drop that
> just yet.)

It is harmless to leave it in.  It will rot though, eventually --
better take it out before then.  Add some gcc_unreachable, perhaps.

> Supposedly more noteworthy: this now-stricter canonicalization
> leads to a requirement to rewrite patterns that used to be:
> 
>  (parallel
>   [(set reg0 (mem (plus (mult reg1 N) reg2)))
>    (set reg3 (plus (mult reg1 N) reg2))])
> 
> into the awkwardly asymmetric:
> 
>  (parallel
>   [(set reg0 (mem (plus (mult reg1 2) reg2)))
>    (set reg3 (plus (ashift reg1 M) reg2))])
> 
> (where M = log2 N)

Yeah.  This is true of parallels in general: canonicalisation works
on each arm separately.  I'm not sure what can be done about it.


Looks like quite some work for you, I'm sorry about that,


Segher

Reply via email to