These two patterns were independent, but exactly match the semantics of X. Replace them with a single paramaterized pattern. Thanks to Andrew for pointing this one out over IRC.
gcc/ChangeLog * config/riscv/riscv.md (eh_set_lr_<mode>): New pattern. (eh_set_lr_si): Remove. (eh_set_lr_di): Likewise. --- No new failures on the Linux multilibs on trunk. --- gcc/config/riscv/riscv.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index 0796f91dd30..11a59f98a9f 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -2562,16 +2562,10 @@ ;; Clobber the return address on the stack. We can't expand this ;; until we know where it will be put in the stack frame. -(define_insn "eh_set_lr_si" - [(unspec [(match_operand:SI 0 "register_operand" "r")] UNSPEC_EH_RETURN) - (clobber (match_scratch:SI 1 "=&r"))] - "! TARGET_64BIT" - "#") - -(define_insn "eh_set_lr_di" - [(unspec [(match_operand:DI 0 "register_operand" "r")] UNSPEC_EH_RETURN) - (clobber (match_scratch:DI 1 "=&r"))] - "TARGET_64BIT" +(define_insn "eh_set_lr_<mode>" + [(unspec [(match_operand:X 0 "register_operand" "r")] UNSPEC_EH_RETURN) + (clobber (match_scratch:X 1 "=&r"))] + "" "#") (define_split -- 2.34.1