aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/mips/mips.c11
-rw-r--r--gcc/config/mips/mips.h1
-rw-r--r--gcc/config/mips/mips.opt4
-rw-r--r--gcc/doc/invoke.texi9
5 files changed, 28 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2addc2b..810843b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-19 Catherine Moore <clm@codesourcery.com>
+
+ * doc/invoke.texi (mfix-rm7000, mno-fix-rm7000): Document.
+ * config/mips/mips.opt (mfix-rm7000): New option.
+ * config/mips/mips.h (ASM_SPEC): Handle mfix-rm7000.
+ * config/mips/mips.c (mips_reorg_process_insns): Disable
+ noreorder for TARGET_FIX_RM7000.
+
2013-11-19 Oleg Endo <olegendo@gcc.gnu.org>
* config/sh/sh-c.c: Fix typo in include of file attribs.h.
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 00c6e0c..82ca719 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -16076,10 +16076,13 @@ mips_reorg_process_insns (void)
if (crtl->profile)
cfun->machine->all_noreorder_p = false;
- /* Code compiled with -mfix-vr4120 or -mfix-24k can't be all noreorder
- because we rely on the assembler to work around some errata.
- The r5900 too has several bugs. */
- if (TARGET_FIX_VR4120 || TARGET_FIX_24K || TARGET_MIPS5900)
+ /* Code compiled with -mfix-vr4120, -mfix-rm7000 or -mfix-24k can't be
+ all noreorder because we rely on the assembler to work around some
+ errata. The R5900 too has several bugs. */
+ if (TARGET_FIX_VR4120
+ || TARGET_FIX_RM7000
+ || TARGET_FIX_24K
+ || TARGET_MIPS5900)
cfun->machine->all_noreorder_p = false;
/* The same is true for -mfix-vr4130 if we might generate MFLO or
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index c4a2a4a..11687b8 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -1167,6 +1167,7 @@ struct mips_cpu_info {
%{meva} %{mno-eva} \
%{msmartmips} %{mno-smartmips} \
%{mmt} %{mno-mt} \
+%{mfix-rm7000} %{mno-fix-rm7000} \
%{mfix-vr4120} %{mfix-vr4130} \
%{mfix-24k} \
%{noasmopt:-O0; O0|fno-delayed-branch:-O1; O*:-O2; :-O1} \
diff --git a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt
index 0324041..10faf42 100644
--- a/gcc/config/mips/mips.opt
+++ b/gcc/config/mips/mips.opt
@@ -165,6 +165,10 @@ mfix-r4400
Target Report Mask(FIX_R4400)
Work around certain R4400 errata
+mfix-rm7000
+Target Report Var(TARGET_FIX_RM7000)
+Work around certain RM7000 errata
+
mfix-r10000
Target Report Mask(FIX_R10000)
Work around certain R10000 errata
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index c250385..d4a6639 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -796,7 +796,8 @@ Objective-C and Objective-C++ Dialects}.
-mmad -mno-mad -mimadd -mno-imadd -mfused-madd -mno-fused-madd -nocpp @gol
-mfix-24k -mno-fix-24k @gol
-mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400 @gol
--mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120 @gol
+-mfix-r10000 -mno-fix-r10000 -mfix-rm7000 -mno-fix-rm7000 @gol
+-mfix-vr4120 -mno-fix-vr4120 @gol
-mfix-vr4130 -mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1 @gol
-mflush-func=@var{func} -mno-flush-func @gol
-mbranch-cost=@var{num} -mbranch-likely -mno-branch-likely @gol
@@ -17462,6 +17463,12 @@ branch-likely instructions. @option{-mfix-r10000} is the default when
@option{-march=r10000} is used; @option{-mno-fix-r10000} is the default
otherwise.
+@item -mfix-rm7000
+@itemx -mno-fix-rm7000
+@opindex mfix-rm7000
+Work around the RM7000 @code{dmult}/@code{dmultu} errata. The
+workarounds are implemented by the assembler rather than by GCC@.
+
@item -mfix-vr4120
@itemx -mno-fix-vr4120
@opindex mfix-vr4120