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

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Single, hopefully valid TU, no LTO needed:

$ gcc -march=armv8-a -fPIC -O3 100241.c -fvisibility=internal -c
100241.c: In function ‘vp9_first_pass_encode_tile_mb_row’:
100241.c:32:1: error: unable to generate reloads for:
   32 | }
      | ^
(insn 74 89 90 14 (set (reg:V2DI 136)
        (vec_concat:V2DI (mem:DI (plus:DI (reg/v/f:DI 178 [orig:113 fp_acc_data
] [113])
                    (const_int 16 [0x10])) [3
fp_acc_data_15(D)->frame_noise_energy+0 S8 A64])
            (mem:DI (plus:DI (reg/v/f:DI 178 [orig:113 fp_acc_data ] [113])
                    (const_int 24 [0x18])) [3 fp_acc_data_15(D)->intra_error+0
S8 A64]))) "100241.c":23:63 2473 {load_pair_lanesdi}
     (nil))
during RTL pass: reload
100241.c:32:1: internal compiler error: in curr_insn_transform, at
lra-constraints.c:4133
0x152862f diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char
const*, std::__va_list*, diagnostic_t)
        ???:0
0xce52ff internal_error(char const*, ...)
        ???:0
0xce53f3 fancy_abort(char const*, int, char const*)
        ???:0
0x7db1d7 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        ???:0
0xea8d57 curr_insn_transform(bool)
        ???:0
0xea3d87 lra_constraints(bool)
        ???:0
0x131523b lra(_IO_FILE*)
        ???:0
0x1308fff (anonymous namespace)::pass_reload::execute(function*)
        ???:0



extern char num_4x4_blocks_high_lookup, num_4x4_blocks_wide_lookup,
    vp9_foreach_transformed_block_in_plane_xd_0_0_0;
int vp9_first_pass_encode_tile_mb_row_cpi_0,
    vp9_first_pass_encode_tile_mb_row_tile_data_0_0, vp9_encode_sby_pass1_x;
typedef void foreach_transformed_block_visitor();
void vp9_encode_sby_pass1();
typedef struct {
  long coded_error;
  long sr_coded_error;
  long frame_noise_energy;
  long intra_error;
} FIRSTPASS_DATA;
typedef struct {
  FIRSTPASS_DATA fp_data;
} TileDataEnc;
TileDataEnc accumulate_fp_mb_row_stat_this_tile;
void vp9_first_pass_encode_tile_mb_row(FIRSTPASS_DATA *fp_acc_data) {
  int mb_col_end = vp9_first_pass_encode_tile_mb_row_tile_data_0_0;
  for (; mb_col_end;) {
    vp9_encode_sby_pass1();
    if (vp9_first_pass_encode_tile_mb_row_cpi_0) {
      FIRSTPASS_DATA __trans_tmp_1 = *fp_acc_data;
      accumulate_fp_mb_row_stat_this_tile.fp_data.coded_error +=
          accumulate_fp_mb_row_stat_this_tile.fp_data.sr_coded_error +=
          __trans_tmp_1.sr_coded_error;
      accumulate_fp_mb_row_stat_this_tile.fp_data.frame_noise_energy +=
          __trans_tmp_1.frame_noise_energy;
      accumulate_fp_mb_row_stat_this_tile.fp_data.intra_error +=
          __trans_tmp_1.intra_error;
    }
  }
}
foreach_transformed_block_visitor vp9_foreach_transformed_block_in_plane_visit;
void vp9_foreach_transformed_block_in_plane(void *arg) {
  int c, max_blocks_wide = num_4x4_blocks_wide_lookup;
  for (; num_4x4_blocks_high_lookup;) {
    c = 0;
    for (; c < max_blocks_wide;
         c += vp9_foreach_transformed_block_in_plane_xd_0_0_0)
      vp9_foreach_transformed_block_in_plane_visit(arg);
  }
}
void vp9_encode_sby_pass1() {
  vp9_foreach_transformed_block_in_plane(&vp9_encode_sby_pass1_x);
}

Reply via email to