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

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Is that with release checking?  The code around this is

  /* Extraction of a full MODE1 value can be done with a subreg as long
     as the least significant bit of the value is the least significant
     bit of either OP0 or a word of OP0.  */
  if (!MEM_P (op0) && !reverse && op0_mode.exists (&imode))
    {
      rtx sub = extract_bit_field_as_subreg (mode1, op0, imode,
                                             bitsize, bitnum);
      if (sub)
        return convert_extracted_bit_field (sub, mode, tmode, unsignedp);
    }

where

template<typename T>
template<typename U>
inline bool
opt_mode<T>::exists (U *mode) const
{
  if (m_mode != E_VOIDmode)
    {
      *mode = T (typename mode_traits<T>::from_int (m_mode));
      return true;
    }
  return false;
}

so it's unobvious how 'imode' is uninitialized.

Reply via email to