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