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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-05-08
            Summary|Wrong "may be               |Wrong decl in a "may be
                   |uninitialized" warning      |uninitialized" warning
     Ever confirmed|0                           |1

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---

What is happening is ssa_name which was used with uop is being renamed to be
use the data decl
Which:
    uop_c *uop = (uop_c *)m_frontend_q->peek(0);

Where peek is defined as :
    T peek(int entry)
    {
....

      T data;
      int count = 0;
      for (int ii = m_current_index; ii < m_current_index + m_size; ++ii) {
        int index = ii % m_size;
        for (auto I = m_entry[index].begin(), E = m_entry[index].end(); I != E;
++I) {
          if (count++ == entry) {
            data = (*I)->m_data;
            break;
          }
        }
      }

      return data;
    }

If m_size was 0, then data would be unitialized or if
m_entry[m_current_index].empty() is false.  I have not dug in to see m_size can
not be non 0 or GCC can figure out if it can be non 0 or the other case is
true.
So only the decl in the warning is incorrect as far as I can tell.

Reply via email to