Hi,

The attached patch fixes an ICE (unrecognizable insn) when accumulators are 
used in interrupt handlers for MIPS64R2. There was just a typo in the function 
name.

Ok to apply?

Regards,
Robert

gcc/
        * config/mips/mips.c (mips_emit_save_slot_move): Fix typo.

gcc/testsuite/
        * gcc.target/mips/20150707.c: New test.
---
 gcc/config/mips/mips.c                   | 2 +-
 gcc/testsuite/gcc.target/mips/20150707.c | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.target/mips/20150707.c

diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index ef8b0c7..1f247cf 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -10961,7 +10961,7 @@ mips_emit_save_slot_move (rtx dest, rtx src, rtx temp)
        {
          mips_emit_move (temp, src);
          if (TARGET_64BIT)
-           emit_insn (gen_mthisi_di (gen_rtx_REG (TImode, MD_REG_FIRST),
+           emit_insn (gen_mthidi_ti (gen_rtx_REG (TImode, MD_REG_FIRST),
                                      temp, gen_rtx_REG (DImode, LO_REGNUM)));
          else
            emit_insn (gen_mthisi_di (gen_rtx_REG (DImode, MD_REG_FIRST),
diff --git a/gcc/testsuite/gcc.target/mips/20150707.c 
b/gcc/testsuite/gcc.target/mips/20150707.c
new file mode 100644
index 0000000..434b3b8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/20150707.c
@@ -0,0 +1,7 @@
+/* { dg-do assemble } */
+/* { dg-options "-mips64r2" } */
+_Accum a;
+__attribute__((interrupt))
+void foo () {
+  a = a*a;
+}
-- 
2.2.2

Reply via email to