+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.
+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.
+ 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. */
#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
#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
#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
#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
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. */
#define OBSD_HAS_CORRECT_SPECS
#define HAVE_ENABLE_EXECUTE_STACK
-
-/* Put all *tf routines in libgcc. */
-#define LIBGCC2_TF_CEXT q
#ifndef USE_GLD
#define USE_HIDDEN_LINKONCE 0
#endif
-
-/* Put all *tf routines in libgcc. */
-#define LIBGCC2_TF_CEXT q
#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
#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
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 \
+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
# 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