aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch
diff options
context:
space:
mode:
authorSyrone Wong <wong.syrone@gmail.com>2018-06-21 23:08:10 +0800
committerFelix Fietkau <nbd@nbd.name>2018-07-22 17:16:47 +0200
commit139f99c05880508b19308eed366d8fbf5804fbf9 (patch)
tree992be71ad7bc5f3c35a4fb2ca70974f3101c6e3f /toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch
parent7ad20678e5fbbd5dbce4663ed0d8f9bdb1ab30ab (diff)
downloadupstream-139f99c05880508b19308eed366d8fbf5804fbf9.tar.gz
upstream-139f99c05880508b19308eed366d8fbf5804fbf9.tar.bz2
upstream-139f99c05880508b19308eed366d8fbf5804fbf9.zip
toolchain/gcc: add GCC 8.1.0
Changes compared to GCC 7.x 001-revert_register_mode_search.patch dropped The underlying issue is described at the end of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58139 It is fixed by the upstream commit: https://github.com/gcc-mirror/gcc/commit/3fa2798aa887d141d86985240f03e2f3809e7e62 020-PR-libstdc-81797-Add-.NOTPARALLEL-to-include-Makefil.patch dropped due to already upstream 100-PR-rtl-optimization-83496.patch dropped due to already upstream 910-mbsd_multi.patch modified to fix ambiguous overloaded inform() call error gcc/input.h header: define UNKNOWN_LOCATION ((source_location) 0) - inform (0, "someone does not honour COPTS correctly, passed %d times", - honour_copts); + inform (UNKNOWN_LOCATION, "someone does not honour COPTS correctly, passed %d times", + honour_copts); 940-no-clobber-stamp-bits.patch dropped due to fixed upstream by another way upstream commit: https://github.com/gcc-mirror/gcc/commit/87b2d547f8ac9778d66909b8726fe967d1efbc74 950-cpp_file_path_translation.patch dropped, Both -fmacro-prefix-map and -ffile-prefix-map are added to gcc 8.1.0, if I understand it correctly, we should use -fmacro-prefix-map usage: -fmacro-prefix-map=@var{old}=@var{new} upstream commit: https://github.com/gcc-mirror/gcc/commit/859b51f83662d01e4f158ea9327db9ca37fe70b3 -iremap exists as a flag for a long time, for backward compatibility, I think we should keep the variable name unchanged but change its value in rules.mk for gcc 8.x and higher. Compile and run tested on x86_64 Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
Diffstat (limited to 'toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch')
-rw-r--r--toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch20
1 files changed, 20 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch b/toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch
new file mode 100644
index 0000000000..b89eca2faf
--- /dev/null
+++ b/toolchain/gcc/patches/8.1.0/110-Fix-MIPS-PR-84790.patch
@@ -0,0 +1,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)