public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/100241] New: internal compiler error: in curr_insn_transform, at lra-constraints.c:4133
@ 2021-04-23 22:27 mpolacek at gcc dot gnu.org
  2021-04-23 22:30 ` [Bug target/100241] " mpolacek at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-04-23 22:27 UTC (permalink / raw)
  To: gcc-bugs

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-01-01  8:48 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-23 22:27 [Bug target/100241] New: internal compiler error: in curr_insn_transform, at lra-constraints.c:4133 mpolacek at gcc dot gnu.org
2021-04-23 22:30 ` [Bug target/100241] " mpolacek at gcc dot gnu.org
2021-04-23 22:33 ` mpolacek at gcc dot gnu.org
2021-04-24 13:59 ` mpolacek at gcc dot gnu.org
2021-04-24 14:46 ` mpolacek at gcc dot gnu.org
2021-04-24 14:55 ` mpolacek at gcc dot gnu.org
2021-04-24 19:39 ` mpolacek at gcc dot gnu.org
2021-04-24 20:26 ` pinskia at gcc dot gnu.org
2022-01-01  8:10 ` pinskia at gcc dot gnu.org
2022-01-01  8:48 ` cvs-commit at gcc dot gnu.org
2022-01-01  8:48 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).