Thanks for fixing this.

Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> writes:
> diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
> index 89a46a933fa..79bd0cfbd28 100644
> --- a/gcc/simplify-rtx.c
> +++ b/gcc/simplify-rtx.c
> @@ -6697,6 +6697,19 @@ simplify_subreg (machine_mode outermode, rtx op,
>       }
>      }
>  
> +  /* If op is a vector comparison operator, rewrite it in a new mode.
> +     This probably won't match, but may allow further simplifications.
> +     Also check if number of elements and size of each element
> +     match for outermode and innermode.  */
> +

Excess blank line after the comment.  IMO the second part of the comment
reads too much like an afterthought.  How about:

  /* If OP is a vector comparison and the subreg is not changing the
     number of elements or the size of the elements, change the result
     of the comparison to the new mode.  */

> +  if (COMPARISON_P (op)
> +      && VECTOR_MODE_P (outermode)
> +      && VECTOR_MODE_P (innermode)
> +      && (known_eq (GET_MODE_NUNITS (outermode), GET_MODE_NUNITS 
> (innermode)))
> +      && (known_eq (GET_MODE_UNIT_SIZE (outermode),
> +                 GET_MODE_UNIT_SIZE (innermode))))

Redundant brackets around the known_eq calls.

> +    return gen_rtx_fmt_ee (GET_CODE (op), outermode, XEXP (op, 0), XEXP (op, 
> 1));

This should use simplify_gen_relational, so that we try to simplify
the new expression.

Richard

Reply via email to