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 not-quite-@0.

But your version should be fine.

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)

Marc Glisse

Reply via email to