From faaa3afb19f2e58947f96c7282331403d2e644b2 Mon Sep 17 00:00:00 2001 From: Catherine Moore Date: Tue, 19 Nov 2013 16:30:54 -0500 Subject: [PATCH] invoke.texi (mfix-rm7000, [...]): Document. 2013-11-19 Catherine Moore * 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. From-SVN: r205054 --- gcc/ChangeLog | 8 ++++++++ gcc/config/mips/mips.c | 11 +++++++---- gcc/config/mips/mips.h | 1 + gcc/config/mips/mips.opt | 4 ++++ gcc/doc/invoke.texi | 9 ++++++++- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2addc2bc558..810843b7cfc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-11-19 Catherine Moore + + * 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 * 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 00c6e0c90ae..82ca71987f2 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 c4a2a4a6862..11687b8a053 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 0324041dbea..10faf4216a5 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 c250385eebc..d4a66398065 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 -- 2.30.2