diff options
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-cppbuiltin.c | 22 | ||||
-rw-r--r-- | gcc/config/i386/cygming.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/darwin.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/dragonfly.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/gnu-user-common.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/openbsdelf.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/sol2.h | 3 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 3 | ||||
-rw-r--r-- | gcc/config/ia64/linux.h | 4 | ||||
-rw-r--r-- | gcc/system.h | 2 | ||||
-rw-r--r-- | libgcc/ChangeLog | 4 | ||||
-rw-r--r-- | libgcc/libgcc2.c | 13 |
15 files changed, 49 insertions, 38 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 37749c7..0c7b215 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2014-09-18 Joseph Myers <joseph@codesourcery.com> + + * system.h (LIBGCC2_TF_CEXT): Poison. + * config/i386/cygming.h (LIBGCC2_TF_CEXT): Remove. + * config/i386/darwin.h (LIBGCC2_TF_CEXT): Likewise. + * config/i386/dragonfly.h (LIBGCC2_TF_CEXT): Likewise. + * config/i386/freebsd.h (LIBGCC2_TF_CEXT): Likewise. + * config/i386/gnu-user-common.h (LIBGCC2_TF_CEXT): Likewise. + * config/i386/openbsdelf.h (LIBGCC2_TF_CEXT): Likewise. + * config/i386/sol2.h (LIBGCC2_TF_CEXT): Likewise. + * config/ia64/ia64.h (LIBGCC2_TF_CEXT): Likewise. + * config/ia64/linux.h (LIBGCC2_TF_CEXT): Likewise. + 2014-09-19 Kito Cheng <kito@0xlab.org> * except.h: Fix header guard. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 0b22cf6..efe7417 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-09-18 Joseph Myers <joseph@codesourcery.com> + + * c-cppbuiltin.c (c_cpp_builtins): Define __LIBGCC_*_FUNC_EXT__ + for supported floating-point modes. + 2014-09-15 Manuel López-Ibáñez <manu@gcc.gnu.org> * c.opt (Wpsabi): Use LangEnabledBy. diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index b4095a0..9e2040b 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -956,6 +956,28 @@ c_cpp_builtins (cpp_reader *pfile) + sizeof ("__LIBGCC_HAS__MODE__")); sprintf (macro_name, "__LIBGCC_HAS_%s_MODE__", name); cpp_define (pfile, macro_name); + macro_name = (char *) alloca (strlen (name) + + sizeof ("__LIBGCC__FUNC_EXT__")); + sprintf (macro_name, "__LIBGCC_%s_FUNC_EXT__", name); + const char *suffix; + if (mode == TYPE_MODE (double_type_node)) + suffix = ""; + else if (mode == TYPE_MODE (float_type_node)) + suffix = "f"; + else if (mode == TYPE_MODE (long_double_type_node)) + suffix = "l"; + /* ??? The following assumes the built-in functions (defined + in target-specific code) match the suffixes used for + constants. Because in fact such functions are not + defined for the 'w' suffix, 'l' is used there + instead. */ + else if (mode == targetm.c.mode_for_suffix ('q')) + suffix = "q"; + else if (mode == targetm.c.mode_for_suffix ('w')) + suffix = "l"; + else + gcc_unreachable (); + builtin_define_with_value (macro_name, suffix, 0); } /* For libgcc crtstuff.c and libgcc2.c. */ diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index a2c3773..95b8f6f 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -339,9 +339,6 @@ do { \ #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q - /* Output function declarations at the end of the file. */ #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END i386_pe_file_end diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index cafc98a..c1a55c1 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -153,9 +153,6 @@ extern int darwin_emit_branch_islands; #define SHIFT_DOUBLE_OMITS_COUNT 0 -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q - #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 b46a13e..0951128 100644 --- a/gcc/config/i386/dragonfly.h +++ b/gcc/config/i386/dragonfly.h @@ -89,9 +89,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #undef TARGET_96_ROUND_53_LONG_DOUBLE #define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q - /* 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 b09bfd0..e341f6b 100644 --- a/gcc/config/i386/freebsd.h +++ b/gcc/config/i386/freebsd.h @@ -131,9 +131,6 @@ along with GCC; see the file COPYING3. If not see #undef TARGET_96_ROUND_53_LONG_DOUBLE #define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q - /* 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 5f19735..0e61996 100644 --- a/gcc/config/i386/gnu-user-common.h +++ b/gcc/config/i386/gnu-user-common.h @@ -57,9 +57,6 @@ along with GCC; see the file COPYING3. If not see GNU_USER_TARGET_MATHFILE_SPEC " " \ GNU_USER_TARGET_ENDFILE_SPEC -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack /* The stack pointer needs to be moved while checking the stack. */ diff --git a/gcc/config/i386/openbsdelf.h b/gcc/config/i386/openbsdelf.h index 8e2ecea..470fbed 100644 --- a/gcc/config/i386/openbsdelf.h +++ b/gcc/config/i386/openbsdelf.h @@ -111,6 +111,3 @@ along with GCC; see the file COPYING3. If not see #define OBSD_HAS_CORRECT_SPECS #define HAVE_ENABLE_EXECUTE_STACK - -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index be1e6fc..79ad8c1 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -236,6 +236,3 @@ along with GCC; see the file COPYING3. If not see #ifndef USE_GLD #define USE_HIDDEN_LINKONCE 0 #endif - -/* Put all *tf routines in libgcc. */ -#define LIBGCC2_TF_CEXT q diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index dd14b8a..4cc80a9 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -258,9 +258,6 @@ while (0) #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE (TARGET_ABI_OPEN_VMS ? 64 : 80) -/* On HP-UX, we use the l suffix for TFmode in libgcc2.c. */ -#define LIBGCC2_TF_CEXT l - #define DEFAULT_SIGNED_CHAR 1 /* A C expression for a string describing the name of the data type to use for diff --git a/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h index bd1b582..e4b12ec 100644 --- a/gcc/config/ia64/linux.h +++ b/gcc/config/ia64/linux.h @@ -76,10 +76,6 @@ do { \ #undef LINK_EH_SPEC #define LINK_EH_SPEC "" -/* Put all *tf routines in libgcc. */ -#undef LIBGCC2_TF_CEXT -#define LIBGCC2_TF_CEXT q - #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs diff --git a/gcc/system.h b/gcc/system.h index 416837c..3208a9d 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -936,7 +936,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 SF_SIZE DF_SIZE XF_SIZE TF_SIZE + ROUND_TOWARDS_ZERO SF_SIZE DF_SIZE XF_SIZE TF_SIZE LIBGCC2_TF_CEXT /* 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 fa432395..3673651 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,5 +1,9 @@ 2014-09-18 Joseph Myers <joseph@codesourcery.com> + * libgcc2.c (CEXT): Define using __LIBGCC_*_FUNC_EXT__. + +2014-09-18 Joseph Myers <joseph@codesourcery.com> + * config/i386/sfp-machine.h (FP_TRAPPING_EXCEPTIONS): Treat clear bits not set bits as indicating trapping exceptions. diff --git a/libgcc/libgcc2.c b/libgcc/libgcc2.c index 2800fe9..dc8a235 100644 --- a/libgcc/libgcc2.c +++ b/libgcc/libgcc2.c @@ -1865,34 +1865,29 @@ NAME (TYPE x, int m) # define MTYPE SFtype # define CTYPE SCtype # define MODE sc -# define CEXT f +# define CEXT __LIBGCC_SF_FUNC_EXT__ # define NOTRUNC __FLT_EVAL_METHOD__ == 0 #elif defined(L_muldc3) || defined(L_divdc3) # define MTYPE DFtype # define CTYPE DCtype # define MODE dc +# define CEXT __LIBGCC_DF_FUNC_EXT__ # if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64 -# define CEXT l # define NOTRUNC 1 # else -# define CEXT # define NOTRUNC __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 1 # endif #elif defined(L_mulxc3) || defined(L_divxc3) # define MTYPE XFtype # define CTYPE XCtype # define MODE xc -# define CEXT l +# define CEXT __LIBGCC_XF_FUNC_EXT__ # define NOTRUNC 1 #elif defined(L_multc3) || defined(L_divtc3) # define MTYPE TFtype # define CTYPE TCtype # define MODE tc -# if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128 -# define CEXT l -# else -# define CEXT LIBGCC2_TF_CEXT -# endif +# define CEXT __LIBGCC_TF_FUNC_EXT__ # define NOTRUNC 1 #else # error |