[Bug tree-optimization/91825] [10 regression] Bogus -Wmaybe-uninitialized with r275744 breaks bootstrap
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 29 12:20:00 GMT 2019
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;
}
More information about the Gcc-bugs
mailing list