Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc/dist/gcc/config/rs6000 Bring in gcc 4.5 ch...



details:   https://anonhg.NetBSD.org/src/rev/2a6600d0109e
branches:  trunk
changeset: 767229:2a6600d0109e
user:      matt <matt%NetBSD.org@localhost>
date:      Tue Jul 12 08:47:24 2011 +0000

description:
Bring in gcc 4.5 changes.  powerpc64 can at least build a compiler now.

diffstat:

 external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h |  64 +++++++++-----------
 1 files changed, 29 insertions(+), 35 deletions(-)

diffs (147 lines):

diff -r 38c0245d4d9d -r 2a6600d0109e external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h
--- a/external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h       Tue Jul 12 07:51:33 2011 +0000
+++ b/external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h       Tue Jul 12 08:47:24 2011 +0000
@@ -57,6 +57,8 @@
 #define DOT_SYMBOLS dot_symbols
 #endif
 
+#define TARGET_PROFILE_KERNEL profile_kernel
+
 #undef  PROCESSOR_DEFAULT
 #define PROCESSOR_DEFAULT PROCESSOR_POWER4
 #undef  PROCESSOR_DEFAULT64
@@ -74,10 +76,6 @@
 #define INVALID_64BIT "-m%s not supported in this configuration"
 #define INVALID_32BIT INVALID_64BIT
 
-#ifndef MASK_PROFILE_KERNEL    /* XXXHRH */
-#define MASK_PROFILE_KERNEL 0  /* XXXHRH */
-#endif                         /* XXXHRH */
-
 #undef SUBSUBTARGET_OVERRIDE_OPTIONS
 #define        SUBSUBTARGET_OVERRIDE_OPTIONS                           \
   do                                                           \
@@ -102,9 +100,9 @@
              target_flags &= ~MASK_EABI;                       \
              error (INVALID_64BIT, "eabi");                    \
            }                                                   \
-         if (target_flags & MASK_PROTOTYPE)                    \
+         if (TARGET_PROTOTYPE)                                 \
            {                                                   \
-             target_flags &= ~MASK_PROTOTYPE;                  \
+             target_prototype = 0;                             \
              error (INVALID_64BIT, "prototype");               \
            }                                                   \
          if ((target_flags & MASK_POWERPC64) == 0)             \
@@ -119,7 +117,7 @@
            error (INVALID_32BIT, "32");                        \
          if (TARGET_PROFILE_KERNEL)                            \
            {                                                   \
-             target_flags &= ~MASK_PROFILE_KERNEL;             \
+             TARGET_PROFILE_KERNEL = 0;                        \
              error (INVALID_32BIT, "profile-kernel");          \
            }                                                   \
        }                                                       \
@@ -218,9 +216,7 @@
    ? 128                                                               \
    : (TARGET_64BIT                                                     \
       && TARGET_ALIGN_NATURAL == 0                                     \
-      && TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE                \
-                   ? get_inner_array_type (FIELD)                      \
-                   : TREE_TYPE (FIELD)) == DFmode)                     \
+      && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode)  \
    ? MIN ((COMPUTED), 32)                                              \
    : (COMPUTED))
 
@@ -265,14 +261,6 @@
 #define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
   (!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
 
-/* __throw will restore its own return address to be the same as the
-   return address of the function that the throw is being made to.
-   This is unfortunate, because we want to check the original
-   return address to see if we need to restore the TOC.
-   So we have to squirrel it away with this.  */
-#define SETUP_FRAME_ADDRESSES() \
-  do { if (TARGET_64BIT) rs6000_aix_emit_builtin_unwind_init (); } while (0)
-
 /* Override svr4.h  */
 #undef MD_EXEC_PREFIX
 #undef MD_STARTFILE_PREFIX
@@ -281,6 +269,13 @@
    process.  XXXMRG?  */
 #define OS_MISSING_POWERPC64 !TARGET_64BIT
 
+/* NetBSD has float and long double forms of math functions.  */
+#undef  TARGET_C99_FUNCTIONS
+#define TARGET_C99_FUNCTIONS 1
+
+/* NetBSD doesn't have sincos that follows the GNU extension.  */
+#undef  TARGET_HAS_SINCOS
+
 #undef  TARGET_OS_CPP_BUILTINS
 #define TARGET_OS_CPP_BUILTINS()                       \
   do                                                   \
@@ -314,16 +309,8 @@
 #define RS6000_CPU_CPP_ENDIAN_BUILTINS()       \
   do                                           \
     {                                          \
-      if (BYTES_BIG_ENDIAN)                    \
-       {                                       \
-         builtin_define ("__BIG_ENDIAN__");    \
-         builtin_assert ("machine=bigendian"); \
-       }                                       \
-      else                                     \
-       {                                       \
-         builtin_define ("__LITTLE_ENDIAN__"); \
-         builtin_assert ("machine=littleendian"); \
-       }                                       \
+      builtin_define ("__BIG_ENDIAN__");       \
+      builtin_assert ("machine=bigendian");    \
     }                                          \
   while (0)
 
@@ -462,9 +449,8 @@
    we also do this for floating-point constants.  We actually can only
    do this if the FP formats of the target and host machines are the
    same, but we can't check that since not every file that uses
-   GO_IF_LEGITIMATE_ADDRESS_P includes real.h.  We also do this when
-   we can write the entry into the TOC and the entry is not larger
-   than a TOC entry.  */
+   the macros includes real.h.  We also do this when we can write the
+   entry into the TOC and the entry is not larger than a TOC entry.  */
 
 #undef  ASM_OUTPUT_SPECIAL_POOL_ENTRY_P
 #define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE)                       \
@@ -477,14 +463,13 @@
           && GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode))      \
        || (GET_CODE (X) == CONST_DOUBLE                                        \
           && ((TARGET_64BIT                                            \
-               && (TARGET_POWERPC64                                    \
-                   || TARGET_MINIMAL_TOC                               \
-                   || (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT     \
+               && (TARGET_MINIMAL_TOC                                  \
+                   || (SCALAR_FLOAT_MODE_P (GET_MODE (X))              \
                        && ! TARGET_NO_FP_IN_TOC)))                     \
               || (!TARGET_64BIT                                        \
                   && !TARGET_NO_FP_IN_TOC                              \
                   && !TARGET_RELOCATABLE                               \
-                  && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT       \
+                  && SCALAR_FLOAT_MODE_P (GET_MODE (X))                \
                   && BITS_PER_WORD == HOST_BITS_PER_INT)))))
 
 /* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, nor can it use
@@ -571,4 +556,13 @@
 #define LINK_GCC_C_SEQUENCE_SPEC \
   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
 
+/* Use --as-needed -lgcc_s for eh support.  */
+#ifdef HAVE_LD_AS_NEEDED
+#define USE_LD_AS_NEEDED 1
+#endif
+
+/* NetBSD ppc64 has 128-bit long double support.  */
+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+#endif
 #define POWERPC_NETBSD



Home | Main Index | Thread Index | Old Index