On Tue, Feb 04, 2020 at 06:04:09PM -0700, Jeff Law wrote:
> --- a/gcc/cse.c
> +++ b/gcc/cse.c
> @@ -5572,6 +5572,16 @@ cse_insn (rtx_insn *insn)
>         sets[i].rtl = 0;
>       }
>  
> +      /* Similarly for no-op moves.  */
> +      if (n_sets == 1
> +       && GET_CODE (src) == REG

Just nits:
REG_P (src) ?

> +       && src == dest)

Is pointer comparison ok?  I mean, shouldn't we instead do
rtx_equal_p (src, dest), set_noop_p (sets[i].rtl) or noop_move_p (insn)?

> +     * gcc.c-torture/compile/pr90275.c: New test

Missing full stop.

> +++ b/gcc/testsuite/gcc.c-torture/compile/pr90275.c
> @@ -0,0 +1,27 @@
> +a, b, c;

int 

> +
> +long long d;
> +
> +e() {

void

(unless the ommission of those makes it not reproduce anymore, which I
doubt).

> +
> +  char f;
> +
> +  for (;;) {
> +
> +    c = a = c ? 5 : 0;
> +
> +    if (f) {
> +
> +      b = a;
> +
> +      f = d;
> +
> +    }
> +
> +    (d || b) < (a > e) ?: (b ? 0 : f) || (d -= f);
> +
> +  }
> +
> +}


        Jakub

Reply via email to