aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches/8.4.0/110-Fix-MIPS-PR-84790.patch
blob: b89eca2fafacc77b9917f39f3c48b9a4b2c597a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84790.
MIPS16 functions have a static assembler prologue which clobbers
registers v0 and v1. Add these register clobbers to function call
instructions.

--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3102,6 +3102,12 @@ mips_emit_call_insn (rtx pattern, rtx or
       emit_insn (gen_update_got_version ());
     }
 
+  if (TARGET_MIPS16 && TARGET_USE_GOT)
+    {
+      clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS16_PIC_TEMP);
+      clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS_PROLOGUE_TEMP (word_mode));
+    }
+
   if (TARGET_MIPS16
       && TARGET_EXPLICIT_RELOCS
       && TARGET_CALL_CLOBBERED_GP)