From 0b456434fe0f1d64291b7c6b3596c836c9519f85 Mon Sep 17 00:00:00 2001 From: YunQiang Su Date: Wed, 19 Jun 2024 23:48:26 +0800 Subject: [PATCH] MIPS: Output $0 for conditional trap if !ISA_HAS_COND_TRAPI 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.md(conditional_trap_reg): Output $0 instead of 0 if !ISA_HAS_COND_TRAPI. --- gcc/config/mips/mips.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index f9da06663bb..737d2566ec8 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -1245,7 +1245,7 @@ (match_operand:GPR 2 "reg_or_0_operand" "dJ")]) (const_int 0))] "ISA_HAS_COND_TRAP && !ISA_HAS_COND_TRAPI" - "t%C0\t%z1,%2" + "t%C0\t%z1,%z2" [(set_attr "type" "trap")]) (define_insn "*conditional_trap" -- 2.47.2