From: Joseph Myers Date: Mon, 8 Sep 2014 12:25:35 +0000 (+0100) Subject: Remove SF_SIZE etc. target macros. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=66bb34c0907f2dc731ae8a69424ff224090e73e5;p=gcc.git Remove SF_SIZE etc. target macros. gcc: * config/i386/cygming.h (TF_SIZE): Remove. * config/i386/darwin.h (TF_SIZE): Remove. * config/i386/dragonfly.h (TF_SIZE): Remove. * config/i386/freebsd.h (TF_SIZE): Remove. * config/i386/gnu-user-common.h (TF_SIZE): Remove. * config/i386/openbsdelf.h (TF_SIZE): Remove. * config/i386/sol2.h (TF_SIZE): Remove. * config/ia64/hpux.h (XF_SIZE, TF_SIZE): Remove. * config/ia64/linux.h (TF_SIZE): Remove. * doc/tm.texi.in (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Remove. * doc/tm.texi: Regenerate. * system.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Poison. gcc/c-family: * c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa digits of floating-point modes if -fbuilding-libgcc. libgcc: * libgcc2.c (SF_SIZE): Change all uses to __LIBGCC_SF_MANT_DIG__. (DF_SIZE): Change all uses to __LIBGCC_DF_MANT_DIG__. (XF_SIZE): Change all uses to __LIBGCC_XF_MANT_DIG__. (TF_SIZE): Change all uses to __LIBGCC_TF_MANT_DIG__. * libgcc2.h (SF_SIZE): Change to __LIBGCC_SF_MANT_DIG__. Give error if not defined and LIBGCC2_HAS_SF_MODE is defined. (DF_SIZE): Change to __LIBGCC_DF_MANT_DIG__. Give error if not defined and LIBGCC2_HAS_DF_MODE is defined. (XF_SIZE): Change to __LIBGCC_XF_MANT_DIG__. Give error if not defined and LIBGCC2_HAS_XF_MODE is defined. (TF_SIZE): Change to __LIBGCC_TF_MANT_DIG__. Give error if not defined and LIBGCC2_HAS_TF_MODE is defined. From-SVN: r215014 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d882a16691..33b106b6296 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2014-09-08 Joseph Myers + + * config/i386/cygming.h (TF_SIZE): Remove. + * config/i386/darwin.h (TF_SIZE): Remove. + * config/i386/dragonfly.h (TF_SIZE): Remove. + * config/i386/freebsd.h (TF_SIZE): Remove. + * config/i386/gnu-user-common.h (TF_SIZE): Remove. + * config/i386/openbsdelf.h (TF_SIZE): Remove. + * config/i386/sol2.h (TF_SIZE): Remove. + * config/ia64/hpux.h (XF_SIZE, TF_SIZE): Remove. + * config/ia64/linux.h (TF_SIZE): Remove. + * doc/tm.texi.in (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Remove. + * doc/tm.texi: Regenerate. + * system.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Poison. + 2014-09-08 Joseph Myers * defaults.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 38330fb9c8a..7768555e473 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-09-08 Joseph Myers + + * c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa + digits of floating-point modes if -fbuilding-libgcc. + 2014-09-05 Joseph Myers * c-cppbuiltin.c (c_cpp_builtins): Also define diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index a47473534b5..411ca194ada 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -944,6 +944,20 @@ c_cpp_builtins (cpp_reader *pfile) /* For libgcc-internal use only. */ if (flag_building_libgcc) { + /* Properties of floating-point modes for libgcc2.c. */ + for (enum machine_mode mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); + mode != VOIDmode; + mode = GET_MODE_WIDER_MODE (mode)) + { + const char *name = GET_MODE_NAME (mode); + char *macro_name + = (char *) alloca (strlen (name) + + sizeof ("__LIBGCC__MANT_DIG__")); + sprintf (macro_name, "__LIBGCC_%s_MANT_DIG__", name); + builtin_define_with_int_value (macro_name, + REAL_MODE_FORMAT (mode)->p); + } + /* For libgcc crtstuff.c and libgcc2.c. */ builtin_define_with_int_value ("__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__", EH_TABLES_CAN_BE_READ_ONLY); diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 039edccb979..98d652be5ee 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -343,7 +343,6 @@ do { \ #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 /* Output function declarations at the end of the file. */ #undef TARGET_ASM_FILE_END diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index a85aa42d5fc..f6a5b6b0e97 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -157,7 +157,6 @@ extern int darwin_emit_branch_islands; #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END darwin_file_end diff --git a/gcc/config/i386/dragonfly.h b/gcc/config/i386/dragonfly.h index 71362d58e32..ed5f508f7ed 100644 --- a/gcc/config/i386/dragonfly.h +++ b/gcc/config/i386/dragonfly.h @@ -93,7 +93,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 /* Static stack checking is supported by means of probes. */ #define STACK_CHECK_STATIC_BUILTIN 1 diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h index bdca1b80b27..25ab5468d99 100644 --- a/gcc/config/i386/freebsd.h +++ b/gcc/config/i386/freebsd.h @@ -135,7 +135,6 @@ along with GCC; see the file COPYING3. If not see #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 /* Static stack checking is supported by means of probes. */ #define STACK_CHECK_STATIC_BUILTIN 1 diff --git a/gcc/config/i386/gnu-user-common.h b/gcc/config/i386/gnu-user-common.h index b34528217f1..e01491a4737 100644 --- a/gcc/config/i386/gnu-user-common.h +++ b/gcc/config/i386/gnu-user-common.h @@ -61,7 +61,6 @@ along with GCC; see the file COPYING3. If not see #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack diff --git a/gcc/config/i386/openbsdelf.h b/gcc/config/i386/openbsdelf.h index 46ae0b6cdad..06913eb2b2e 100644 --- a/gcc/config/i386/openbsdelf.h +++ b/gcc/config/i386/openbsdelf.h @@ -116,4 +116,3 @@ along with GCC; see the file COPYING3. If not see #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index 9c3a6f49662..5c9232360d1 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -241,4 +241,3 @@ along with GCC; see the file COPYING3. If not see #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 diff --git a/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h index 0261c7096af..f19e6b38dc1 100644 --- a/gcc/config/ia64/hpux.h +++ b/gcc/config/ia64/hpux.h @@ -192,12 +192,10 @@ do { \ /* Put all *xf routines in libgcc, regardless of long double size. */ #undef LIBGCC2_HAS_XF_MODE #define LIBGCC2_HAS_XF_MODE 1 -#define XF_SIZE 64 /* Put all *tf routines in libgcc, regardless of long double size. */ #undef LIBGCC2_HAS_TF_MODE #define LIBGCC2_HAS_TF_MODE 1 -#define TF_SIZE 113 /* HP-UX headers are C++-compatible. */ #define NO_IMPLICIT_EXTERN_C diff --git a/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h index e4a3ea750c0..61138c828f3 100644 --- a/gcc/config/ia64/linux.h +++ b/gcc/config/ia64/linux.h @@ -81,7 +81,6 @@ do { \ #define LIBGCC2_HAS_TF_MODE 1 #undef LIBGCC2_TF_CEXT #define LIBGCC2_TF_CEXT q -#define TF_SIZE 113 #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 904ee5af3ef..53c33e50a58 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1581,20 +1581,6 @@ uses this macro should also arrange to use @file{t-gnu-prefix} in the libgcc @file{config.host}. @end defmac -@defmac SF_SIZE -@defmacx DF_SIZE -@defmacx XF_SIZE -@defmacx TF_SIZE -Define these macros to be the size in bits of the mantissa of -@code{SFmode}, @code{DFmode}, @code{XFmode} and @code{TFmode} values, -if the defaults in @file{libgcc2.h} are inappropriate. By default, -@code{FLT_MANT_DIG} is used for @code{SF_SIZE}, @code{LDBL_MANT_DIG} -for @code{XF_SIZE} and @code{TF_SIZE}, and @code{DBL_MANT_DIG} or -@code{LDBL_MANT_DIG} for @code{DF_SIZE} according to whether -@code{DOUBLE_TYPE_SIZE} or -@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64. -@end defmac - @defmac TARGET_FLT_EVAL_METHOD A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h}, assuming, if applicable, that the floating-point control word is in its diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 50d1ac1cff8..57cf92b90fe 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -1423,20 +1423,6 @@ uses this macro should also arrange to use @file{t-gnu-prefix} in the libgcc @file{config.host}. @end defmac -@defmac SF_SIZE -@defmacx DF_SIZE -@defmacx XF_SIZE -@defmacx TF_SIZE -Define these macros to be the size in bits of the mantissa of -@code{SFmode}, @code{DFmode}, @code{XFmode} and @code{TFmode} values, -if the defaults in @file{libgcc2.h} are inappropriate. By default, -@code{FLT_MANT_DIG} is used for @code{SF_SIZE}, @code{LDBL_MANT_DIG} -for @code{XF_SIZE} and @code{TF_SIZE}, and @code{DBL_MANT_DIG} or -@code{LDBL_MANT_DIG} for @code{DF_SIZE} according to whether -@code{DOUBLE_TYPE_SIZE} or -@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64. -@end defmac - @defmac TARGET_FLT_EVAL_METHOD A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h}, assuming, if applicable, that the floating-point control word is in its diff --git a/gcc/system.h b/gcc/system.h index a1e89f4fb22..692e67e4215 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -935,7 +935,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; EXTRA_CONSTRAINT_STR EXTRA_MEMORY_CONSTRAINT \ EXTRA_ADDRESS_CONSTRAINT CONST_DOUBLE_OK_FOR_CONSTRAINT_P \ CALLER_SAVE_PROFITABLE LARGEST_EXPONENT_IS_NORMAL \ - ROUND_TOWARDS_ZERO + ROUND_TOWARDS_ZERO SF_SIZE DF_SIZE XF_SIZE TF_SIZE /* Hooks that are no longer used. */ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 8133025a648..b53f2e82473 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,18 @@ +2014-09-08 Joseph Myers + + * libgcc2.c (SF_SIZE): Change all uses to __LIBGCC_SF_MANT_DIG__. + (DF_SIZE): Change all uses to __LIBGCC_DF_MANT_DIG__. + (XF_SIZE): Change all uses to __LIBGCC_XF_MANT_DIG__. + (TF_SIZE): Change all uses to __LIBGCC_TF_MANT_DIG__. + * libgcc2.h (SF_SIZE): Change to __LIBGCC_SF_MANT_DIG__. Give + error if not defined and LIBGCC2_HAS_SF_MODE is defined. + (DF_SIZE): Change to __LIBGCC_DF_MANT_DIG__. Give error if not + defined and LIBGCC2_HAS_DF_MODE is defined. + (XF_SIZE): Change to __LIBGCC_XF_MANT_DIG__. Give error if not + defined and LIBGCC2_HAS_XF_MODE is defined. + (TF_SIZE): Change to __LIBGCC_TF_MANT_DIG__. Give error if not + defined and LIBGCC2_HAS_TF_MODE is defined. + 2014-09-08 Joseph Myers * fp-bit.c (pack_d, unpack_d): Remove LARGEST_EXPONENT_IS_NORMAL diff --git a/libgcc/libgcc2.c b/libgcc/libgcc2.c index aea476a34e6..2800fe949e2 100644 --- a/libgcc/libgcc2.c +++ b/libgcc/libgcc2.c @@ -1506,7 +1506,7 @@ __fixsfdi (SFtype a) XFtype __floatdixf (DWtype u) { -#if W_TYPE_SIZE > XF_SIZE +#if W_TYPE_SIZE > __LIBGCC_XF_MANT_DIG__ # error #endif XFtype d = (Wtype) (u >> W_TYPE_SIZE); @@ -1520,7 +1520,7 @@ __floatdixf (DWtype u) XFtype __floatundixf (UDWtype u) { -#if W_TYPE_SIZE > XF_SIZE +#if W_TYPE_SIZE > __LIBGCC_XF_MANT_DIG__ # error #endif XFtype d = (UWtype) (u >> W_TYPE_SIZE); @@ -1534,7 +1534,7 @@ __floatundixf (UDWtype u) TFtype __floatditf (DWtype u) { -#if W_TYPE_SIZE > TF_SIZE +#if W_TYPE_SIZE > __LIBGCC_TF_MANT_DIG__ # error #endif TFtype d = (Wtype) (u >> W_TYPE_SIZE); @@ -1548,7 +1548,7 @@ __floatditf (DWtype u) TFtype __floatunditf (UDWtype u) { -#if W_TYPE_SIZE > TF_SIZE +#if W_TYPE_SIZE > __LIBGCC_TF_MANT_DIG__ # error #endif TFtype d = (UWtype) (u >> W_TYPE_SIZE); @@ -1568,11 +1568,11 @@ __floatunditf (UDWtype u) #if defined(L_floatdisf) #define FUNC __floatdisf #define FSTYPE SFtype -#define FSSIZE SF_SIZE +#define FSSIZE __LIBGCC_SF_MANT_DIG__ #else #define FUNC __floatdidf #define FSTYPE DFtype -#define FSSIZE DF_SIZE +#define FSSIZE __LIBGCC_DF_MANT_DIG__ #endif FSTYPE @@ -1584,18 +1584,18 @@ FUNC (DWtype u) f *= Wtype_MAXp1_F; f += (UWtype)u; return f; -#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) \ - || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) \ - || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE)) +#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (__LIBGCC_DF_MANT_DIG__)) \ + || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (__LIBGCC_XF_MANT_DIG__)) \ + || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (__LIBGCC_TF_MANT_DIG__)) -#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) -# define FSIZE DF_SIZE +#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (__LIBGCC_DF_MANT_DIG__)) +# define FSIZE __LIBGCC_DF_MANT_DIG__ # define FTYPE DFtype -#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) -# define FSIZE XF_SIZE +#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (__LIBGCC_XF_MANT_DIG__)) +# define FSIZE __LIBGCC_XF_MANT_DIG__ # define FTYPE XFtype -#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE)) -# define FSIZE TF_SIZE +#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (__LIBGCC_TF_MANT_DIG__)) +# define FSIZE __LIBGCC_TF_MANT_DIG__ # define FTYPE TFtype #else # error @@ -1684,11 +1684,11 @@ FUNC (DWtype u) #if defined(L_floatundisf) #define FUNC __floatundisf #define FSTYPE SFtype -#define FSSIZE SF_SIZE +#define FSSIZE __LIBGCC_SF_MANT_DIG__ #else #define FUNC __floatundidf #define FSTYPE DFtype -#define FSSIZE DF_SIZE +#define FSSIZE __LIBGCC_DF_MANT_DIG__ #endif FSTYPE @@ -1700,18 +1700,18 @@ FUNC (UDWtype u) f *= Wtype_MAXp1_F; f += (UWtype)u; return f; -#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) \ - || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) \ - || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE)) +#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (__LIBGCC_DF_MANT_DIG__)) \ + || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (__LIBGCC_XF_MANT_DIG__)) \ + || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (__LIBGCC_TF_MANT_DIG__)) -#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) -# define FSIZE DF_SIZE +#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (__LIBGCC_DF_MANT_DIG__)) +# define FSIZE __LIBGCC_DF_MANT_DIG__ # define FTYPE DFtype -#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) -# define FSIZE XF_SIZE +#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (__LIBGCC_XF_MANT_DIG__)) +# define FSIZE __LIBGCC_XF_MANT_DIG__ # define FTYPE XFtype -#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE)) -# define FSIZE TF_SIZE +#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (__LIBGCC_TF_MANT_DIG__)) +# define FSIZE __LIBGCC_TF_MANT_DIG__ # define FTYPE TFtype #else # error diff --git a/libgcc/libgcc2.h b/libgcc/libgcc2.h index 498ecdfb351..8abd0b7f8bc 100644 --- a/libgcc/libgcc2.h +++ b/libgcc/libgcc2.h @@ -59,41 +59,35 @@ extern void __eprintf (const char *, const char *, unsigned int, const char *) (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128) #endif -#ifndef SF_SIZE +#ifndef __LIBGCC_SF_MANT_DIG__ #if LIBGCC2_HAS_SF_MODE -#define SF_SIZE FLT_MANT_DIG +#error __LIBGCC_SF_MANT_DIG__ not defined #else -#define SF_SIZE 0 +#define __LIBGCC_SF_MANT_DIG__ 0 #endif #endif -#ifndef DF_SIZE +#ifndef __LIBGCC_DF_MANT_DIG__ #if LIBGCC2_HAS_DF_MODE -#if __SIZEOF_DOUBLE__ * __CHAR_BIT__ == 64 -#define DF_SIZE DBL_MANT_DIG -#elif LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64 -#define DF_SIZE LDBL_MANT_DIG +#error __LIBGCC_DF_MANT_DIG__ not defined #else -#define DF_SIZE 0 -#endif -#else -#define DF_SIZE 0 +#define __LIBGCC_DF_MANT_DIG__ 0 #endif #endif -#ifndef XF_SIZE +#ifndef __LIBGCC_XF_MANT_DIG__ #if LIBGCC2_HAS_XF_MODE -#define XF_SIZE LDBL_MANT_DIG +#error __LIBGCC_XF_MANT_DIG__ not defined #else -#define XF_SIZE 0 +#define __LIBGCC_XF_MANT_DIG__ 0 #endif #endif -#ifndef TF_SIZE +#ifndef __LIBGCC_TF_MANT_DIG__ #if LIBGCC2_HAS_TF_MODE -#define TF_SIZE LDBL_MANT_DIG +#error __LIBGCC_TF_MANT_DIG__ not defined #else -#define TF_SIZE 0 +#define __LIBGCC_TF_MANT_DIG__ 0 #endif #endif