summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/darwin-ldouble.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-27 19:59:49 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-27 19:59:49 +0000
commitbaad77c238a8f41ec44c6128d4efc1a652f1f78c (patch)
treef8ce337caaf6de64c8851c52894637502cb77c32 /gcc/config/rs6000/darwin-ldouble.c
parent90fcf8d4fca944caed9594996160ff58ddbddeb4 (diff)
downloadgcc-baad77c238a8f41ec44c6128d4efc1a652f1f78c.tar.gz
2006-01-27 Jakub Jelinek <jakub@redhat.com>
PR target/25864 * libgcc-std.ver: Add GCC_4.1.0 symbol version. * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append -mno-minimal-toc to previous content. (bispecs): Remove goal. * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h. * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4 compatibility aliases on powerpc-*-*gnu*. * config/rs6000/libgcc-ppc-glibc.ver: New file. * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append libgcc-ppc-glibc.ver on powerpc*-*-*gnu*. (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs. (ldblspecs): New goal. * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed. * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and _df_to_tf. * config/fp-bit.h (TMODES): Don't define if none of TFLOAT, L_sf_to_tf or L_df_to_tf is defined. 2006-01-27 David Edelsohn <edelsohn@gnu.org> Alan Modra <amodra@bigpond.net.au> PR target/25864 * config/rs6000/linux.h (POWERPC_LINUX): Define. * config/rs6000/linux64.h (POWERPC_LINUX): Define. * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC. * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero. * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero. * config/rs6000/rs6000.c (rs6000_ieeequad): New variable. (rs6000_override_options): Initialize rs6000_ieeequad. Initialize TFmode format to ibm_extended_format if not TARGET_IEEEQUAD. (rs6000_handle_option): Accept -mabi= ibmlongdouble and ieeelongdouble. (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts. (rs6000_return_in_memory): Only return IEEEQUAD in memory. (function_arg_advance): IBM long double passed in two FPRs, not split. (function_arg): IBM long double passed in FPRs. (rs6000_pass_by_reference): Only IEEEQUAD passed by reference. (rs6000_gimplify_va_arg): IBM long double passed in two FPRs. Only multireg GPR aligned. (rs6000_init_libfuncs): Enable IBM long double functions if not IEEEQUAD. (rs6000_generate_compare): Use IBM long double compare if not TARGET_IEEEQUAD. * config/rs6000/rs6000.h (rs6000_ieeequad): Declare. (TARGET_IEEEQUAD): Define. (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if not TARGET_IEEEQUAD. * config/rs6000/rs6000.md: Enable TFmode patterns if !TARGET_IEEEQUAD. * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c. * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float and -mlong-double-128 are incompatible. * doc/invoke.texi (-mabi): Collect options together. Add ibmlongdouble and ieeelongdouble. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110303 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/darwin-ldouble.c')
-rw-r--r--gcc/config/rs6000/darwin-ldouble.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/rs6000/darwin-ldouble.c b/gcc/config/rs6000/darwin-ldouble.c
index 8faf3a56f17..11df6494f74 100644
--- a/gcc/config/rs6000/darwin-ldouble.c
+++ b/gcc/config/rs6000/darwin-ldouble.c
@@ -1,5 +1,6 @@
/* 128-bit long double support routines for Darwin.
- Copyright (C) 1993, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -48,7 +49,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
This code currently assumes big-endian. */
-#if !_SOFT_FLOAT && (defined (__MACH__) || defined (__powerpc64__) || defined (_AIX))
+#if !_SOFT_FLOAT && (defined (__MACH__) || defined (__powerpc64__) || defined (__powerpc__) || defined (_AIX))
#define fabs(x) __builtin_fabs(x)
#define isless(x, y) __builtin_isless (x, y)
@@ -67,7 +68,8 @@ extern long double __gcc_qsub (double, double, double, double);
extern long double __gcc_qmul (double, double, double, double);
extern long double __gcc_qdiv (double, double, double, double);
-#if defined __ELF__ && defined SHARED
+#if defined __ELF__ && defined SHARED \
+ && (defined __powerpc64__ || !(defined __linux__ || defined __gnu_hurd__))
/* Provide definitions of the old symbol names to satisfy apps and
shared libs built against an older libgcc. To access the _xlq
symbols an explicit version reference is needed, so these won't