From patchwork Mon Oct 11 00:56:34 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nathan Froyd X-Patchwork-Id: 67375 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id D81A9B70A9 for ; Mon, 11 Oct 2010 11:56:47 +1100 (EST) Received: (qmail 11065 invoked by alias); 11 Oct 2010 00:56:44 -0000 Received: (qmail 11057 invoked by uid 22791); 11 Oct 2010 00:56:43 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Oct 2010 00:56:39 +0000 Received: (qmail 8431 invoked from network); 11 Oct 2010 00:56:36 -0000 Received: from unknown (HELO codesourcery.com) (froydnj@127.0.0.2) by mail.codesourcery.com with ESMTPA; 11 Oct 2010 00:56:36 -0000 Date: Sun, 10 Oct 2010 20:56:34 -0400 From: Nathan Froyd To: gcc-patches@gcc.gnu.org Subject: [PATCH] use __SIZEOF_DOUBLE__ in libgcc Message-ID: <20101011005633.GA24720@nightcrawler> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org The patch below removes LIBGCC2_DOUBLE_TYPE_SIZE from libgcc.2h and related files, replacing it instead with __SIZEOF_DOUBLE__ (and adjusting conditionals to account for the bits/bytes mismatch). One less use of target macros in libgcc is a good thing. Bootstrapped on x86_64-unknown-linux-gnu, tested with cross to rx-elf and sh-elf. OK to commit? -Nathan * libgcc2.h: Use __SIZEOF_DOUBLE__ instead of LIBGCC2_DOUBLE_TYPE_SIZE. (LIBGCC2_DOUBLE_TYPE_SIZE): Delete. * config/fixed-bit.h: Likewise. * config/rx/rx.h (LIBGCC2_DOUBLE_TYPE_SIZE): Delete. * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Delete. * system.h (LIBGCC2_DOUBLE_TYPE_SIZE): Poison. diff --git a/gcc/config/fixed-bit.h b/gcc/config/fixed-bit.h index 0ee8af3..ad75efd 100644 --- a/gcc/config/fixed-bit.h +++ b/gcc/config/fixed-bit.h @@ -49,9 +49,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN #endif -#ifndef LIBGCC2_DOUBLE_TYPE_SIZE -#define LIBGCC2_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE -#endif #ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE #endif @@ -63,7 +60,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #ifndef LIBGCC2_HAS_DF_MODE #define LIBGCC2_HAS_DF_MODE \ (BITS_PER_UNIT == 8 \ - && (LIBGCC2_DOUBLE_TYPE_SIZE == 64 \ + && (__SIZEOF_DOUBLE__ == 8 \ || LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64)) #endif diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h index 140d6d4..7da4de1 100644 --- a/gcc/config/rx/rx.h +++ b/gcc/config/rx/rx.h @@ -115,11 +115,9 @@ extern enum rx_cpu_types rx_cpu_type; #ifdef __RX_32BIT_DOUBLES__ #define LIBGCC2_HAS_DF_MODE 0 #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 32 -#define LIBGCC2_DOUBLE_TYPE_SIZE 32 #else #define LIBGCC2_HAS_DF_MODE 1 #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 -#define LIBGCC2_DOUBLE_TYPE_SIZE 64 #endif #define DEFAULT_SIGNED_CHAR 0 diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 01236c1..8f149dc 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -2028,12 +2028,6 @@ struct sh_args { floating point types equivalent to `float'. */ #define DOUBLE_TYPE_SIZE ((TARGET_SH2E && ! TARGET_SH4 && ! TARGET_SH2A_DOUBLE) ? 32 : 64) -#if defined(__SH2E__) || defined(__SH3E__) || defined( __SH2A_SINGLE_ONLY__) || defined( __SH4_SINGLE_ONLY__) -#define LIBGCC2_DOUBLE_TYPE_SIZE 32 -#else -#define LIBGCC2_DOUBLE_TYPE_SIZE 64 -#endif - /* 'char' is signed by default. */ #define DEFAULT_SIGNED_CHAR 1 diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h index f344917..1c61dbc 100644 --- a/gcc/libgcc2.h +++ b/gcc/libgcc2.h @@ -43,9 +43,6 @@ extern void __eprintf (const char *, const char *, unsigned int, const char *) #define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN #endif -#ifndef LIBGCC2_DOUBLE_TYPE_SIZE -#define LIBGCC2_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE -#endif #ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE #endif @@ -57,7 +54,7 @@ extern void __eprintf (const char *, const char *, unsigned int, const char *) #ifndef LIBGCC2_HAS_DF_MODE #define LIBGCC2_HAS_DF_MODE \ (BITS_PER_UNIT == 8 \ - && (LIBGCC2_DOUBLE_TYPE_SIZE == 64 \ + && (__SIZEOF_DOUBLE__ == 8 \ || LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64)) #endif @@ -81,7 +78,7 @@ extern void __eprintf (const char *, const char *, unsigned int, const char *) #ifndef DF_SIZE #if LIBGCC2_HAS_DF_MODE -#if LIBGCC2_DOUBLE_TYPE_SIZE == 64 +#if __SIZEOF_DOUBLE__ == 8 #define DF_SIZE DBL_MANT_DIG #elif LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64 #define DF_SIZE LDBL_MANT_DIG diff --git a/gcc/system.h b/gcc/system.h index 4bfebaf..5131fed 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -784,6 +784,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN \ LANG_HOOKS_MISSING_ARGUMENT LANG_HOOKS_HASH_TYPES +/* Hooks into libgcc2. */ + #pragma GCC poison LIBGCC2_DOUBLE_TYPE_SIZE + /* Miscellaneous macros that are no longer used. */ #pragma GCC poison USE_MAPPED_LOCATION