diff mbox

[SH] Backport PR 33135 fix to 4.7 and 4.6

Message ID 1342972733.2373.2.camel@yam-132-YW-E178-FTW
State New
Headers show

Commit Message

Oleg Endo July 22, 2012, 3:58 p.m. UTC
Hello,

The attached patches fix PR 33135 on the 4.7 and 4.6 branches.
Tested on both branches with 'make all' and 'make info dvi pdf'.

OK to install?

Cheers,
Oleg

ChangeLog:

	PR target/33135
	* config/sh/sh.opt (mieee): Use Var instead of Mask.  Correct 
	description.
	* config/sh/sh.c (sh_option_override): Do not change 
	flag_finite_math_only.  Set TARGET_IEEE to complement of
	flag_finite_math_only.
	* doc/invoke.texi (SH options): Add mno-ieee.  Correct
	description of mieee and mno-ieee behavior.

Comments

Kaz Kojima July 22, 2012, 10 p.m. UTC | #1
Oleg Endo <oleg.endo@t-online.de> wrote:
> The attached patches fix PR 33135 on the 4.7 and 4.6 branches.
> Tested on both branches with 'make all' and 'make info dvi pdf'.
> 
> OK to install?

OK.

Regards,
	kaz
diff mbox

Patch

Index: gcc/config/sh/sh.opt
===================================================================
--- gcc/config/sh/sh.opt	(revision 189755)
+++ gcc/config/sh/sh.opt	(working copy)
@@ -270,8 +270,8 @@ 
 Follow Renesas (formerly Hitachi) / SuperH calling conventions
 
 mieee
-Target Report Mask(IEEE)
-Increase the IEEE compliance for floating-point code
+Target Var(TARGET_IEEE)
+Increase the IEEE compliance for floating-point comparisons
 
 mindexed-addressing
 Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
Index: gcc/config/sh/sh.c
===================================================================
--- gcc/config/sh/sh.c	(revision 189755)
+++ gcc/config/sh/sh.c	(working copy)
@@ -763,11 +763,6 @@ 
   SUBTARGET_OVERRIDE_OPTIONS;
   if (optimize > 1 && !optimize_size)
     target_flags |= MASK_SAVE_ALL_TARGET_REGS;
-  if (flag_finite_math_only == 2)
-    flag_finite_math_only
-      = !flag_signaling_nans && TARGET_SH2E && ! TARGET_IEEE;
-  if (TARGET_SH2E && !flag_finite_math_only)
-    target_flags |= MASK_IEEE;
   sh_cpu = PROCESSOR_SH1;
   assembler_dialect = 0;
   if (TARGET_SH2)
@@ -1007,6 +1002,11 @@ 
 	align_functions = min_align;
     }
 
+  /* If the -mieee option was not explicitly set by the user, turn it on
+     unless -ffinite-math-only was specified.  See also PR 33135.  */
+  if (! global_options_set.x_TARGET_IEEE)
+    TARGET_IEEE = ! flag_finite_math_only;
+
   if (sh_fixed_range_str)
     sh_fix_range (sh_fixed_range_str);
 
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 189755)
+++ gcc/doc/invoke.texi	(working copy)
@@ -853,8 +853,8 @@ 
 -m5-compact  -m5-compact-nofpu @gol
 -mb  -ml  -mdalign  -mrelax @gol
 -mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
--mieee  -mbitops  -misize  -minline-ic_invalidate -mpadstruct  -mspace @gol
--mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
+-mieee -mno-ieee -mbitops  -misize  -minline-ic_invalidate -mpadstruct @gol
+-mspace -mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
 -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
 -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
 -maccumulate-outgoing-args -minvalid-symbols}
@@ -16938,13 +16938,15 @@ 
 @option{-mhitachi} is given.
 
 @item -mieee
+@item -mno-ieee
 @opindex mieee
-Increase IEEE-compliance of floating-point code.
-At the moment, this is equivalent to @option{-fno-finite-math-only}.
-When generating 16 bit SH opcodes, getting IEEE-conforming results for
-comparisons of NANs / infinities incurs extra overhead in every
-floating point comparison, therefore the default is set to
-@option{-ffinite-math-only}.
+@opindex mnoieee
+Control the IEEE compliance of floating-point comparisons, which affects the
+handling of cases where the result of a comparison is unordered.  By default
+@option{-mieee} is implicitly enabled.  If @option{-ffinite-math-only} is
+enabled @option{-mno-ieee} is implicitly set, which results in faster
+floating-point greater-equal and less-equal comparisons.  The implcit settings
+can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
 
 @item -minline-ic_invalidate
 @opindex minline-ic_invalidate