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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Slightly tweaked, so that no other warnings are reported on it with -O2 -Wall,
except this -Wmaybe-uninitialized starting with the r277864 change and nothing
before:

typedef struct rtx_def *rtx;
enum machine_mode {
  E_VOIDmode, E_BLKmode, E_CCmode, E_CCFPmode, E_CCFPEmode, E_CC_SWPmode,
E_CC_NZCmode, E_CC_NZmode,
  E_CC_Zmode, E_CC_Cmode, E_CC_ADCmode, E_CC_Vmode, E_BImode, E_QImode,
E_HImode, E_SImode, E_DImode,
  E_TImode, E_OImode, E_CImode, E_XImode, E_QQmode, E_HQmode, E_SQmode,
E_DQmode, E_TQmode, E_UQQmode,
  E_UHQmode, E_USQmode, E_UDQmode, E_UTQmode, E_HAmode, E_SAmode, E_DAmode,
E_TAmode, E_UHAmode, E_USAmode,
  E_UDAmode, E_UTAmode, E_HFmode, E_SFmode, E_DFmode, E_TFmode, E_SDmode,
E_DDmode, E_TDmode, E_CQImode,
  E_CHImode, E_CSImode, E_CDImode, E_CTImode, E_COImode, E_CCImode, E_CXImode,
E_HCmode, E_SCmode, E_DCmode,
  E_TCmode, E_V8QImode, E_V4HImode, E_V2SImode, E_V16QImode, E_V8HImode,
E_V4SImode, E_V2DImode, E_VNx2TImode,
  E_VNx3TImode, E_VNx4TImode, E_VNx2OImode, E_V2HFmode, E_V4HFmode, E_V2SFmode,
E_V2DFmode, NUM_MACHINE_MODES
};
template <int N> struct A { int coeffs[N]; };
template <int N> class C : public A<N> {
public:
  template <typename C0> C(const C0 &);
};
machine_mode mode_size_inline_mode, emit_store_flag_1_target_mode;
A<2> mode_size[1];
struct B {
  enum from_int {};
};
extern const char mode_class[NUM_MACHINE_MODES];
template <typename T> T as_a(machine_mode);
class scalar_int_mode {
public:
  scalar_int_mode() {}
  scalar_int_mode(B::from_int p1) : m_mode(machine_mode(p1)) {}
  operator machine_mode() { return m_mode; }
  machine_mode m_mode;
} mode_to_bytes_mode;
scalar_int_mode word_mode;
template <typename T> bool is_int_mode(machine_mode p1, T p2) {
  if (mode_class[p1]) {
    *p2 = B::from_int(p1);
    return true;
  }
  return false;
}
enum insn_code {};
enum rtx_code { GE, LE, LT };
struct rtx_def {
  rtx_code code;
  machine_mode mode;
};
rtx const_int_rtx_63, const_int_rtx_64, emit_store_flag_1_subtarget,
    emit_store_flag_1_tem, emit_store_flag_1_op00, emit_store_flag_1_op01,
    emit_store_flag_1_op0h, emit_store_flag_1_target, emit_store_flag_1_op0,
    emit_store_flag_1_op1;
enum tree_code { RSHIFT_EXPR };
enum optab_tag { and_optab, ior_optab, one_cmpl_optab };
enum optab_methods { OPTAB_DIRECT };
insn_code emit_store_flag_1_icode;
rtx_code emit_store_flag_1_code;
int emit_store_flag_1_unsignedp, emit_store_flag_1_normalizep;
short emit_store_flag_1___trans_tmp_24, emit_store_flag_1___trans_tmp_23;
bool iterate_p();
inline __attribute__((__always_inline__)) C<2> mode_size_inline() {
  A<2> mode_size;
  switch (mode_size_inline_mode) {
  case E_VOIDmode: return 0;
  case E_BLKmode: return 0;
  case E_CCmode: return 4;
  case E_CCFPmode: return 4;
  case E_CCFPEmode: return 4;
  case E_CC_SWPmode: return 4;
  case E_CC_NZCmode: return 4;
  case E_CC_NZmode: return 4;
  case E_CC_Zmode: return 4;
  case E_CC_Cmode: return 4;
  case E_CC_ADCmode: return 4;
  case E_CC_Vmode: return 4;
  case E_BImode: return 1;
  case E_QImode: return 1;
  case E_HImode: return 2;
  case E_SImode: return 4;
  case E_DImode: return 8;
  case E_TImode: return 6;
  case E_OImode: return 2;
  case E_CImode: return 8;
  case E_XImode: return 4;
  case E_QQmode: return 1;
  case E_HQmode: return 2;
  case E_SQmode: return 4;
  case E_DQmode: return 8;
  case E_TQmode: return 6;
  case E_UQQmode: return 1;
  case E_UHQmode: return 2;
  case E_USQmode: return 4;
  case E_UDQmode: return 8;
  case E_UTQmode: return 6;
  case E_HAmode: return 2;
  case E_SAmode: return 4;
  case E_DAmode: return 8;
  case E_TAmode: return 6;
  case E_UHAmode: return 2;
  case E_USAmode: return 4;
  case E_UDAmode: return 8;
  case E_UTAmode: return 6;
  case E_HFmode: return 2;
  case E_SFmode: return 4;
  case E_DFmode: return 8;
  case E_TFmode: return 6;
  case E_SDmode: return 4;
  case E_DDmode: return 8;
  case E_TDmode: return 6;
  case E_CQImode: return 2;
  case E_CHImode: return 4;
  case E_CSImode: return 8;
  case E_CDImode: return 6;
  case E_CTImode: return 2;
  case E_COImode: return 4;
  case E_CCImode: return 6;
  case E_CXImode: return 8;
  case E_HCmode: return 4;
  case E_SCmode: return 8;
  case E_DCmode: return 6;
  case E_TCmode: return 2;
  case E_V8QImode: return 8;
  case E_V4HImode: return 8;
  case E_V2SImode: return 8;
  case E_V16QImode: return 6;
  case E_V8HImode: return 6;
  case E_V4SImode: return 6;
  case E_V2DImode: return 6;
  case E_VNx2TImode: return 2;
  case E_VNx3TImode: return 8;
  case E_VNx4TImode: return 4;
  case E_VNx2OImode: return 4;
  case E_V2HFmode: return 4;
  case E_V4HFmode: return 8;
  case E_V2SFmode: return 8;
  case E_V2DFmode: return 6;
  default: return mode_size;
  }
}
inline __attribute__((always_inline)) C<2> mode_to_bytes() {
  return mode_to_bytes_mode ? mode_size_inline() : mode_size[0];
}
inline __attribute__((always_inline)) C<2> mode_to_bits() {
  mode_to_bytes();
  return 0;
}
inline __attribute__((always_inline)) short GET_MODE_SIZE(scalar_int_mode) {
  return mode_to_bytes().coeffs[0];
}
inline __attribute__((always_inline)) short GET_MODE_BITSIZE(scalar_int_mode) {
  return mode_to_bits().coeffs[0];
}
void get_wider();
void simplify_gen_subreg(machine_mode, rtx, machine_mode, C<2>);
bool val_signbit_known_set_p(machine_mode, long);
rtx emit_store_flag(rtx, rtx_code, rtx, rtx, machine_mode, int, int);
rtx expand_shift(tree_code, machine_mode, rtx, C<2>, rtx, int);
insn_code optab_handler();
void expand_binop(machine_mode, optab_tag, rtx, rtx, rtx, int, optab_methods);
rtx expand_unop(machine_mode, optab_tag, rtx, rtx, int);
void convert_move(rtx, rtx, int);
rtx convert_modes(machine_mode, machine_mode, rtx, int);
rtx emit_cstore();
rtx emit_store_flag_1(machine_mode p1) {
  scalar_int_mode int_mode;
  emit_store_flag_1___trans_tmp_23 = mode_to_bits().coeffs[0];
  if (is_int_mode(p1, &int_mode) && (emit_store_flag_1_op0->code ||
emit_store_flag_1_op0))
    if (emit_store_flag_1_code && const_int_rtx_63) {
      machine_mode __trans_tmp_3 = word_mode, __trans_tmp_4 = int_mode,
                   __trans_tmp_5 = word_mode, __trans_tmp_6 = int_mode,
                   __trans_tmp_7 = word_mode;
      simplify_gen_subreg(__trans_tmp_3, emit_store_flag_1_op0, __trans_tmp_4,
                          0);
      simplify_gen_subreg(__trans_tmp_5, emit_store_flag_1_op0, __trans_tmp_6,
                          8);
      expand_binop(__trans_tmp_7, const_int_rtx_64 ? ior_optab : and_optab,
                   emit_store_flag_1_op00, emit_store_flag_1_op01, 0,
                   emit_store_flag_1_unsignedp, OPTAB_DIRECT);
      if (emit_store_flag_1_tem) {
        machine_mode __trans_tmp_8 = word_mode;
        emit_store_flag(0, emit_store_flag_1_code, emit_store_flag_1_tem,
                        emit_store_flag_1_op1, __trans_tmp_8,
                        emit_store_flag_1_unsignedp,
                        emit_store_flag_1_normalizep);
      }
    }
  if ((emit_store_flag_1_code || emit_store_flag_1_code) && const_int_rtx_64)
    ;
  machine_mode __trans_tmp_10 __attribute__((unused)) = int_mode;
  machine_mode __trans_tmp_12 = word_mode, __trans_tmp_14 = word_mode;
  emit_store_flag_1_tem = emit_store_flag(
      0, emit_store_flag_1_code, emit_store_flag_1_op0h, emit_store_flag_1_op1,
      __trans_tmp_12, emit_store_flag_1_unsignedp,
      emit_store_flag_1_target_mode ||
          emit_store_flag_1_tem->mode == emit_store_flag_1_target_mode);
  bool __trans_tmp_13 = val_signbit_known_set_p(
      __trans_tmp_14, emit_store_flag_1_normalizep ?: 1);
  convert_move(emit_store_flag_1_target, 0, __trans_tmp_13);
  if (emit_store_flag_1_op1 == const_int_rtx_64 &&
      (emit_store_flag_1_code == LT || emit_store_flag_1_code == GE) &&
      is_int_mode(p1, &int_mode)) {
    scalar_int_mode int_target_mode = 
        as_a<scalar_int_mode>(emit_store_flag_1_target_mode);
    emit_store_flag_1___trans_tmp_24 = mode_to_bytes().coeffs[0];
    if (GET_MODE_SIZE(int_mode)) {
      machine_mode __trans_tmp_15 = int_target_mode, __trans_tmp_16 = int_mode;
      emit_store_flag_1_op0 = convert_modes(__trans_tmp_15, __trans_tmp_16,
                                            emit_store_flag_1_op0, 0);
    }
    int_mode = int_target_mode;
    if (int_mode)
      emit_store_flag_1_subtarget = 0;
    if (emit_store_flag_1_code) {
      machine_mode __trans_tmp_17 = int_mode, __trans_tmp_18 = int_mode;
      emit_store_flag_1_op0 =
          expand_unop(__trans_tmp_17, one_cmpl_optab, emit_store_flag_1_op0,
                      emit_store_flag_1_subtarget, 0);
      GET_MODE_BITSIZE(int_mode);
      emit_store_flag_1_normalizep = 1;
      emit_store_flag_1_op0 =
          expand_shift(RSHIFT_EXPR, __trans_tmp_18, emit_store_flag_1_op0, 1,
                       emit_store_flag_1_subtarget, 1);
    }
    if ((int_mode = int_target_mode)) {
      machine_mode __trans_tmp_20 = int_target_mode, __trans_tmp_21 = int_mode;
      emit_store_flag_1_op0 = convert_modes(__trans_tmp_20, __trans_tmp_21,
                                            emit_store_flag_1_op0, 0);
    }
  }
  for (; iterate_p();)
    emit_store_flag_1_icode = optab_handler();
  if (emit_store_flag_1_icode)
    get_wider();
  rtx tem = emit_cstore();
  if (tem)
    if (mode_class[p1])
      tem = emit_cstore();
  if (tem)
    return tem;
  return 0;
}

Reply via email to