[Bug target/83507] [8 Regression] ICE in internal_dfa_insn_code_* for powerpc targets

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 5 18:06:00 GMT 2018


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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Likely just latent before.  The ICE is because modulo-sched.c in
      for (i_reg_move = 0; i_reg_move < nreg_moves; i_reg_move++)
        {
          ps_reg_move_info *move = ps_reg_move (ps, first_move + i_reg_move);

          move->def = i_reg_move > 0 ? first_move + i_reg_move - 1 : i;
          move->uses = sbitmap_alloc (first_move + nreg_moves);
          move->old_reg = old_reg;
          move->new_reg = gen_reg_rtx (GET_MODE (prev_reg));
          move->num_consecutive_stages = distances[0] && distances[1] ? 2 : 1;
          move->insn = gen_move_insn (move->new_reg, copy_rtx (prev_reg));
          bitmap_clear (move->uses);

          prev_reg = move->new_reg;
        }
creates a move instruction from the ca register but rs6000 doesn't support such
a move, and apparently nothing attempts to recog that instruction and bail if
it is non-existent (or if gen_move_insn emits more than one instruction).
I think e.g. insn_latency can be only called on successfully recognized
instructions...


More information about the Gcc-bugs mailing list