diff mbox

Remove all uses of TARGET_FLT_EVAL_METHOD_NON_DEFAULT and poison it

Message ID 1474562612-38327-1-git-send-email-james.greenhalgh@arm.com
State New
Headers show

Commit Message

James Greenhalgh Sept. 22, 2016, 4:43 p.m. UTC
Hi,

I'm going to hookize TARGET_FLT_EVAL_METHOD, so the current definition
of TARGET_FLT_EVAL_METHOD_NON_DEFAULT will stop working.

I looked in to ways of redefining this macro, but each that I explored would
require pulling in target.h in front-ends that don't otherwise need it.

Rather than do that, I thought about the purpose of this macro, which is
to permit a relaxation of the rule that -fexcess-precision=standard
requires front-end specific code to work if the target had no definition of
TARGET_FLT_EVAL_METHOD. That makes -fexcess-precision=standard with a
language other than C not-portable, and in particular it won't work with
any of the i386 backend targets.

The relaxation isn't portable, and keeping it in place is tricky, so this
patch removes it, and poisons TARGET_FLT_EVAL_METHOD_NON_DEFAULT in
system.h to prevent future use.

Bootstrapped and tested on x86_64 with --enable-languages=all,ada,go,obj-c++
with no issues.

OK?

Thanks,
James

---

gcc/

2016-09-22  James Greenhalgh  <james.greenhalgh@arm.com>

	* defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Remove.
	* system.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Poison.

gcc/c-family/

2016-09-22  James Greenhalgh  <james.greenhalgh@arm.com>

	* c-opts.c (c_common_post_options): Remove special case for
	TARGET_FLT_EVAL_METHOD_NON_DEFAULT with -fexcess-precision=standard
	in C++.

gcc/java/

2016-09-22  James Greenhalgh  <james.greenhalgh@arm.com>

	* lang.c (java_post_options): Remove special case for
	TARGET_FLT_EVAL_METHOD_NON_DEFAULT with -fexcess-precision=standard.

gcc/fortran/

2016-09-22  James Greenhalgh  <james.greenhalgh@arm.com>

	* options.c (gfc_post_options): Remove special case for
	TARGET_FLT_EVAL_METHOD_NON_DEFAULT with -fexcess-precision=standard.

gcc/ada/

2016-09-22  James Greenhalgh  <james.greenhalgh@arm.com>

	* gcc-interface/misc.c (gnat_post_options): Remove special case for
	TARGET_FLT_EVAL_METHOD_NON_DEFAULT with -fexcess-precision=standard.
diff mbox

Patch

diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index b240bc5..236a083 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -255,8 +255,7 @@  static bool
 gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
 {
   /* Excess precision other than "fast" requires front-end support.  */
-  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD
-      && TARGET_FLT_EVAL_METHOD_NON_DEFAULT)
+  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD)
     sorry ("-fexcess-precision=standard for Ada");
   flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
 
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index e83944c..5fe3132 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -770,8 +770,7 @@  c_common_post_options (const char **pfilename)
      support.  */
   if (c_dialect_cxx ())
     {
-      if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD
-	  && TARGET_FLT_EVAL_METHOD_NON_DEFAULT)
+      if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD)
 	sorry ("-fexcess-precision=standard for C++");
       flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
     }
diff --git a/gcc/defaults.h b/gcc/defaults.h
index af8fe91..c62c844 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -963,11 +963,8 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define REG_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
 #endif
 
-#ifdef TARGET_FLT_EVAL_METHOD
-#define TARGET_FLT_EVAL_METHOD_NON_DEFAULT 1
-#else
+#ifndef TARGET_FLT_EVAL_METHOD
 #define TARGET_FLT_EVAL_METHOD 0
-#define TARGET_FLT_EVAL_METHOD_NON_DEFAULT 0
 #endif
 
 #ifndef TARGET_DEC_EVAL_METHOD
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 4aa8303..1b6984f 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -209,8 +209,7 @@  gfc_post_options (const char **pfilename)
 
   /* Excess precision other than "fast" requires front-end
      support.  */
-  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD
-      && TARGET_FLT_EVAL_METHOD_NON_DEFAULT)
+  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD)
     sorry ("-fexcess-precision=standard for Fortran");
   flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
 
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 1c6dde4..65025ee 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -569,8 +569,7 @@  java_post_options (const char **pfilename)
 
   /* Excess precision other than "fast" requires front-end
      support.  */
-  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD
-      && TARGET_FLT_EVAL_METHOD_NON_DEFAULT)
+  if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD)
     sorry ("-fexcess-precision=standard for Java");
   flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
 
diff --git a/gcc/system.h b/gcc/system.h
index 8a17197..e8f4dd9 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -976,7 +976,8 @@  extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
 	EXTRA_ADDRESS_CONSTRAINT CONST_DOUBLE_OK_FOR_CONSTRAINT_P	   \
 	CALLER_SAVE_PROFITABLE LARGEST_EXPONENT_IS_NORMAL		   \
 	ROUND_TOWARDS_ZERO SF_SIZE DF_SIZE XF_SIZE TF_SIZE LIBGCC2_TF_CEXT \
-	LIBGCC2_LONG_DOUBLE_TYPE_SIZE STRUCT_VALUE EH_FRAME_IN_DATA_SECTION
+	LIBGCC2_LONG_DOUBLE_TYPE_SIZE STRUCT_VALUE			   \
+	EH_FRAME_IN_DATA_SECTION TARGET_FLT_EVAL_METHOD_NON_DEFAULT
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE	\