On Sat, 15 Oct 2016, Marc Glisse wrote:
> On Thu, 13 Oct 2016, Richard Biener wrote:
> > The patch introduces '@@' captures which do two things - first they
> > change the comparison used for matching back to operand_equal_p
> > only (thus perform "value-matching"), second the @@ capture denotes
> > the specific operand that should be refered to in the result
> > section (ifs and result expressions).
> > When we face (plus @0 @1) (convert? @@0) for example this is lowered
> > to (plus @__2 @1) (convert? @__2@0) marking the @__2 match for
> > value handling.
> Funny, I had the opposite convention in mind ;-)
> On a completely artificial example:
> (minus (plus (plus @0 @@0) @@0) @0)
> would correspond to:
> (minus (plus (plus @1 @2) @3) @4)
> where either @1 or @4 is captured as @0, say @1 for example, @4 is compared
> strictly to @1, while @2 and @3 are value-compared to @1 (lax).
> This way, when we talk about @0 later in the transformation, we are indeed
> talking about the thing that was called @0 in the input pattern, while @@0 is
> But your version should be fine.
Yeah, I tried to avoid any ambiguity if @@ is used and didn't like
to write (minus (plus (plus @0 @@0) @@0) @@0) (too many @@s).
> > I modified the patterns you identified and the ones I did and
> > removed the operand_equal_p uses where possible.
> Thanks. (some can be further generalized, as you explained in an earlier
> message, but we can do that later as the need arises)