diff options
Diffstat (limited to 'gcc/config/mips/mips.md')
-rw-r--r-- | gcc/config/mips/mips.md | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 1a3e2ce22ce..8b81221ea3f 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -6459,6 +6459,18 @@ move\\t%0,%z4\\n\\ { emit_insn (gen_blockage ()); }") + +;; For n32/n64, we need to restore gp after a builtin setjmp. We do this +;; by making use of the fact that we've just called __dummy. + +(define_expand "builtin_setjmp_receiver" + [(const_int 0)] + "TARGET_ABICALLS && mips_abi != ABI_32" + " +{ + emit_insn (gen_loadgp (gen_rtx (SYMBOL_REF, Pmode, \"__dummy\"))); + emit_insn (gen_blockage ()); +}") ;; ;; .................... |