https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100241
Bug ID: 100241
Summary: internal compiler error: in curr_insn_transform, at
lra-constraints.c:4133
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: mpolacek at gcc dot gnu.org
Target Milestone: ---
Currently I only have one test which contains UB:
# cat vp9_blockd.c
extern char num_4x4_blocks_high_lookup, num_4x4_blocks_wide_lookup;
typedef struct {
char tx_size;
} MODE_INFO;
struct macroblockd_plane {
int subsampling_y;
};
typedef struct {
struct macroblockd_plane plane[3];
MODE_INFO *mi;
int mb_to_right_edge;
} MACROBLOCKD;
typedef void foreach_transformed_block_visitor();
int vp9_foreach_transformed_block_in_plane_i;
foreach_transformed_block_visitor vp9_foreach_transformed_block_in_plane_visit;
#pragma GCC visibility push(internal)
void vp9_foreach_transformed_block_in_plane(MACROBLOCKD *xd) {
struct macroblockd_plane pd = xd->plane[0];
MODE_INFO mi = xd->mi[0];
char tx_size = mi.tx_size, plane_bsize = pd.subsampling_y;
int num_4x4_w = num_4x4_blocks_wide_lookup,
num_4x4_h = num_4x4_blocks_high_lookup, r, c,
max_blocks_wide = num_4x4_w + xd->mb_to_right_edge,
max_blocks_high = num_4x4_h, extra_step = max_blocks_wide >> 1;
for (r = 0; r < max_blocks_high; r += tx_size) {
for (c = 0; c < max_blocks_wide; c += 1 << tx_size)
vp9_foreach_transformed_block_in_plane_visit(plane_bsize);
vp9_foreach_transformed_block_in_plane_i += extra_step;
}
}
void vp9_encode_sby_pass1(MACROBLOCKD *x) {
vp9_foreach_transformed_block_in_plane(x); }
#pragma GCC visibility pop
struct vpx_codec_iface {
int i;
int get_glob_hdrs;
void (*fp)();
};
void vp9_first_pass ();
void vp9_get_compressed_data() { vp9_first_pass(); }
void encoder_encode() {
vp9_get_compressed_data();
}
struct vpx_codec_iface vpx_codec_vp9_cx_algo = {1, 0, encoder_encode };
void first_pass_worker_hook()
{
vp9_first_pass_encode_tile_mb_row();
}
# cat vp9_firstpass.c
typedef long int64_t;
void vp9_encode_sby_pass1();
typedef struct {
int64_t coded_error;
int64_t sr_coded_error;
int64_t frame_noise_energy;
int64_t intra_error;
} FIRSTPASS_DATA;
typedef struct {
FIRSTPASS_DATA fp_data;
} TileDataEnc;
void vp9_first_pass_encode_tile_mb_row(int td, FIRSTPASS_DATA *fp_acc_data,
TileDataEnc *tile_data) {
vp9_encode_sby_pass1(td);
FIRSTPASS_DATA __trans_tmp_1 = *fp_acc_data;
TileDataEnc *this_tile = tile_data;
this_tile->fp_data.coded_error += this_tile->fp_data.sr_coded_error +=
__trans_tmp_1.sr_coded_error;
this_tile->fp_data.frame_noise_energy += __trans_tmp_1.frame_noise_energy;
this_tile->fp_data.intra_error += __trans_tmp_1.intra_error;
}
void launch_enc_workers();
void first_pass_worker_hook();
void vp9_encode_fp_row_mt() { launch_enc_workers(first_pass_worker_hook); }
void vp9_first_pass() { vp9_encode_fp_row_mt(); }
# gcc -flto=auto -ffat-lto-objects -march=armv8-a -fPIC -O3 -Wall -W
vp9_blockd.c vp9_firstpass.c -shared
vp9_blockd.c: In function ‘first_pass_worker_hook’:
vp9_blockd.c:50:3: warning: implicit declaration of function
‘vp9_first_pass_encode_tile_mb_row’ [-Wimplicit-function-declaration]
50 | vp9_first_pass_encode_tile_mb_row();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vp9_firstpass.c: In function ‘vp9_first_pass_encode_tile_mb_row’:
vp9_firstpass.c:21:1: error: unable to generate reloads for:
21 | }
| ^
(insn 65 68 69 8 (set (reg:V2DI 138)
(vec_concat:V2DI (mem:DI (plus:DI (reg/v/f:DI 153 [orig:122 fp_acc_data
] [122])
(const_int 16 [0x10])) [4
fp_acc_data_12(D)->frame_noise_energy+0 S8 A64])
(mem:DI (plus:DI (reg/v/f:DI 153 [orig:122 fp_acc_data ] [122])
(const_int 24 [0x18])) [4 fp_acc_data_12(D)->intra_error+0
S8 A64]))) "vp9_firstpass.c":17:34 2473 {load_pair_lanesdi}
(expr_list:REG_DEAD (reg/v/f:DI 122 [ fp_acc_data ])
(nil)))
during RTL pass: reload
vp9_firstpass.c:21:1: internal compiler error: in curr_insn_transform, at
lra-constraints.c:4133
0x14881df diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char
const*, std::__va_list*, diagnostic_t)
???:0
0xc8b7db internal_error(char const*, ...)
???:0
0xc8b8cf fancy_abort(char const*, int, char const*)
???:0
0x783fab _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
???:0
0xe152a7 curr_insn_transform(bool)
???:0
0xe102d7 lra_constraints(bool)
???:0
0x127407b lra(_IO_FILE*)
???:0
0x1267e3f (anonymous namespace)::pass_reload::execute(function*)
???:0
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make: *** [/tmp/cc1Xqmvm.mk:2: /tmp/ccQcOjSl.ltrans0.ltrans.o] Error 1