https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92213
Bug ID: 92213 Summary: internal compiler error: in lra_assign, at lra-assigns.c:1647 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: vmakarov at redhat dot com Target Milestone: --- When enabling mask register spill with: @@ -21452,6 +21442,13 @@ ix86_get_mask_mode (poly_uint64 nunits, poly_uint64 vector_size) static reg_class_t ix86_spill_class (reg_class_t rclass, machine_mode mode) { + if (TARGET_AVX512BW + && (mode == QImode + || mode == HImode + || mode == SImode + || (TARGET_64BIT && mode == DImode)) + && MAYBE_INTEGER_CLASS_P (rclass)) + return ALL_MASK_REGS; if (0 && TARGET_GENERAL_REGS_SSE_SPILL && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC I ran into during RTL pass: reload source/grid/tria.cc: In function 'execute_refinement': source/grid/tria.cc:9243:4: internal compiler error: in lra_assign, at lra-assigns.c:1647 9243 | } | ^ 0xa45159 lra_assign(bool&) /export/gnu/import/git/intel/gcc-tuning/gcc/lra-assigns.c:1647 0xa3fb4d lra(_IO_FILE*) /export/gnu/import/git/intel/gcc-tuning/gcc/lra.c:2482 0x9fc3f1 do_reload /export/gnu/import/git/intel/gcc-tuning/gcc/ira.c:5511 0x9fc3f1 execute /export/gnu/import/git/intel/gcc-tuning/gcc/ira.c:5697 Please submit a full bug report, from if (! lra_asm_error_p && flag_checking) /* Check correctness of allocation for call-crossed pseudos but only when there are no asm errors as in the case of errors the asm is removed and it can result in incorrect allocation. */ for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) if (lra_reg_info[i].nrefs != 0 && reg_renumber[i] >= 0 && overlaps_hard_reg_set_p (lra_reg_info[i].conflict_hard_regs, PSEUDO_REGNO_MODE (i), reg_renumber[i])) gcc_unreachable (); LRA calls Check for conflict assign_by_spills <<<<< Assign mask register k0 to a pseudo ... assign_spill_hard_regs <<<< Assign mask register k0 to a different pseudo ... Check for conflict <<< internal compiler error assign_by_spills assign_spill_hard_regs fails to notice that k0 has been assigned to a pseudo.