https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85301

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-04-09
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, this looks like a missed jump threading to me - possibly DOM being
confused about the BIT_FIELD_REF and the & 3 that appears with the bitfield
test due to
my much beloved optimize_bit_field_compare:

  if ((BIT_FIELD_REF <tick_nohz_idle_exit_ts, 8, 0> & 3) != 0)
    {
      now = ktime_get ();
    }
  if ((BIT_FIELD_REF <tick_nohz_idle_exit_ts, 8, 0> & 1) != 0)
    {
      __tick_nohz_idle_restart_tick (now);
    }

vs.

  if (tick_nohz_idle_exit_ts.idle_active != 0 ||
tick_nohz_idle_exit_ts.tick_stopped != 0)
    {
      now = ktime_get ();
    }
  if (tick_nohz_idle_exit_ts.tick_stopped != 0)
    {
      __tick_nohz_idle_restart_tick (now);
    }

Reply via email to