[Bug bootstrap/91825] Top-of-tree GCC does not bootstrap (uninitialized warning)
mpolacek at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 20 01:41:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91825
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Somewhat reduced:
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_9 = word_mode;
machine_mode __trans_tmp_10 = int_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 = 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;
}
More information about the Gcc-bugs
mailing list