Hello, the ICE with --enable-checking=rtl reported in PR 82960 was caused by spu.c:pad_bb using INSN_CODE on RTX with INSN_P false (specifically, on jump_table_data). Add checks to handle this case.
Tested on spu-elf, committed to mainline. Bye, Ulrich ChangeLog: PR target/82960 * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true. Index: gcc/config/spu/spu.c =================================================================== *** gcc/config/spu/spu.c (revision 255408) --- gcc/config/spu/spu.c (working copy) *************** pad_bb(void) *** 2029,2036 **** for (; insn; insn = next_insn) { next_insn = next_active_insn (insn); ! if (INSN_CODE (insn) == CODE_FOR_iprefetch ! || INSN_CODE (insn) == CODE_FOR_hbr) { if (hbr_insn) { --- 2029,2037 ---- for (; insn; insn = next_insn) { next_insn = next_active_insn (insn); ! if (INSN_P (insn) ! && (INSN_CODE (insn) == CODE_FOR_iprefetch ! || INSN_CODE (insn) == CODE_FOR_hbr)) { if (hbr_insn) { *************** pad_bb(void) *** 2048,2054 **** } hbr_insn = insn; } ! if (INSN_CODE (insn) == CODE_FOR_blockage && next_insn) { if (GET_MODE (insn) == TImode) PUT_MODE (next_insn, TImode); --- 2049,2055 ---- } hbr_insn = insn; } ! if (INSN_P (insn) && INSN_CODE (insn) == CODE_FOR_blockage && next_insn) { if (GET_MODE (insn) == TImode) PUT_MODE (next_insn, TImode); -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com