MIPSr6 removes condition trap instructions with imm, so the instruction like `teq $2,imm` will be converted to li $at, imm teq $2, $at
The current version of Gas cannot detect if imm is zero, and output teq $2, $0 Let's do it in GCC. gcc * config/mips/mips.cc(mips_expand_conditional_trap): Use Reg0 instead of const0_rtx. --- gcc/config/mips/mips.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index 48924116937..ba1e6214656 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -6026,7 +6026,7 @@ mips_expand_conditional_trap (rtx comparison) emit_insn (gen_rtx_TRAP_IF (VOIDmode, gen_rtx_fmt_ee (code, mode, op0, op1), - const0_rtx)); + gen_rtx_REG (mode, GP_REG_FIRST))); } /* Initialize *CUM for a call to a function of type FNTYPE. */ -- 2.39.3 (Apple Git-146)