| Index: gcc/gcc/system.h
|
| diff --git a/gcc/gcc/system.h b/gcc/gcc/system.h
|
| index 80bfe619c3d11ebb377fe8f60a1d02c8c8a692c8..3f7732fd8176b2fb0f14a81c5a9ad3918e73fa04 100644
|
| --- a/gcc/gcc/system.h
|
| +++ b/gcc/gcc/system.h
|
| @@ -1,6 +1,7 @@
|
| /* Get common system includes and various definitions and declarations based
|
| on autoconf macros.
|
| - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
|
| + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
|
| + 2009
|
| Free Software Foundation, Inc.
|
|
|
| This file is part of GCC.
|
| @@ -46,6 +47,9 @@ along with GCC; see the file COPYING3. If not see
|
| #endif
|
|
|
| /* Use the unlocked open routines from libiberty. */
|
| +#ifdef fopen /* fopen is a #define on VMS. */
|
| +#undef fopen
|
| +#endif
|
| #define fopen(PATH,MODE) fopen_unlocked(PATH,MODE)
|
| #define fdopen(FILDES,MODE) fdopen_unlocked(FILDES,MODE)
|
| #define freopen(PATH,MODE,STREAM) freopen_unlocked(PATH,MODE,STREAM)
|
| @@ -410,6 +414,14 @@ extern void *calloc (size_t, size_t);
|
| extern void *realloc (void *, size_t);
|
| #endif
|
|
|
| +#ifdef HAVE_STDINT_H
|
| +#include <stdint.h>
|
| +#endif
|
| +
|
| +#ifdef HAVE_INTTYPES_H
|
| +#include <inttypes.h>
|
| +#endif
|
| +
|
| /* If the system doesn't provide strsignal, we get it defined in
|
| libiberty but no declaration is supplied. */
|
| #if !defined (HAVE_STRSIGNAL) \
|
| @@ -452,7 +464,8 @@ extern int vsnprintf(char *, size_t, const char *, va_list);
|
| /* 1 if we have C99 designated initializers. */
|
| #if !defined(HAVE_DESIGNATED_INITIALIZERS)
|
| #define HAVE_DESIGNATED_INITIALIZERS \
|
| - ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
|
| + (((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L)) \
|
| + && !defined(__cplusplus))
|
| #endif
|
|
|
| #if HAVE_SYS_STAT_H
|
| @@ -513,6 +526,11 @@ extern int vsnprintf(char *, size_t, const char *, va_list);
|
| # define mkdir(a,b) mkdir(a)
|
| #endif
|
|
|
| +/* Provide a way to print an address via printf. */
|
| +#ifndef HOST_PTR_PRINTF
|
| +#define HOST_PTR_PRINTF "%p"
|
| +#endif /* ! HOST_PTR_PRINTF */
|
| +
|
| /* By default, colon separates directories in a path. */
|
| #ifndef PATH_SEPARATOR
|
| #define PATH_SEPARATOR ':'
|
| @@ -575,6 +593,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| #if ENABLE_ASSERT_CHECKING
|
| #define gcc_assert(EXPR) \
|
| ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))
|
| +#elif (GCC_VERSION >= 4005)
|
| +#define gcc_assert(EXPR) \
|
| + ((void)(__builtin_expect(!(EXPR), 0) ? __builtin_unreachable(), 0 : 0))
|
| #else
|
| /* Include EXPR, so that unused variable warnings do not occur. */
|
| #define gcc_assert(EXPR) ((void)(0 && (EXPR)))
|
| @@ -582,7 +603,11 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
|
|
| /* Use gcc_unreachable() to mark unreachable locations (like an
|
| unreachable default case of a switch. Do not use gcc_assert(0). */
|
| +#if (GCC_VERSION >= 4005) && !ENABLE_ASSERT_CHECKING
|
| +#define gcc_unreachable() __builtin_unreachable()
|
| +#else
|
| #define gcc_unreachable() (fancy_abort (__FILE__, __LINE__, __FUNCTION__))
|
| +#endif
|
|
|
| /* Provide a fake boolean type. We make no attempt to use the
|
| C99 _Bool, as it may not be available in the bootstrap compiler,
|
| @@ -672,7 +697,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| DIVDI3_LIBCALL UDIVSI3_LIBCALL UDIVDI3_LIBCALL MODSI3_LIBCALL \
|
| MODDI3_LIBCALL UMODSI3_LIBCALL UMODDI3_LIBCALL BUILD_VA_LIST_TYPE \
|
| PRETEND_OUTGOING_VARARGS_NAMED STRUCT_VALUE_INCOMING_REGNUM \
|
| - ASM_OUTPUT_SECTION_NAME PROMOTE_FUNCTION_ARGS \
|
| + ASM_OUTPUT_SECTION_NAME PROMOTE_FUNCTION_ARGS PROMOTE_FUNCTION_MODE \
|
| STRUCT_VALUE_INCOMING STRICT_ARGUMENT_NAMING \
|
| PROMOTE_FUNCTION_RETURN PROMOTE_PROTOTYPES STRUCT_VALUE_REGNUM \
|
| SETUP_INCOMING_VARARGS EXPAND_BUILTIN_SAVEREGS \
|
| @@ -681,7 +706,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| MUST_PASS_IN_STACK FUNCTION_ARG_PASS_BY_REFERENCE \
|
| VECTOR_MODE_SUPPORTED_P TARGET_SUPPORTS_HIDDEN \
|
| FUNCTION_ARG_PARTIAL_NREGS ASM_OUTPUT_DWARF_DTPREL \
|
| - ALLOCATE_INITIAL_VALUE
|
| + ALLOCATE_INITIAL_VALUE LEGITIMIZE_ADDRESS FRAME_POINTER_REQUIRED \
|
| + CAN_ELIMINATE TRAMPOLINE_TEMPLATE INITIALIZE_TRAMPOLINE \
|
| + TRAMPOLINE_ADJUST_ADDRESS STATIC_CHAIN STATIC_CHAIN_INCOMING
|
|
|
| /* Other obsolete target macros, or macros that used to be in target
|
| headers and were not used, and may be obsolete or may never have
|
| @@ -729,12 +756,12 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| TARGET_ESC TARGET_FF TARGET_NEWLINE TARGET_TAB TARGET_VT \
|
| LINK_LIBGCC_SPECIAL DONT_ACCESS_GBLS_AFTER_EPILOGUE \
|
| TARGET_OPTIONS TARGET_SWITCHES EXTRA_CC_MODES FINALIZE_PIC \
|
| - PREDICATE_CODES SPECIAL_MODE_PREDICATES HOST_PTR_PRINTF \
|
| + PREDICATE_CODES SPECIAL_MODE_PREDICATES UNALIGNED_WORD_ASM_OP \
|
| EXTRA_SECTIONS EXTRA_SECTION_FUNCTIONS READONLY_DATA_SECTION \
|
| TARGET_ASM_EXCEPTION_SECTION TARGET_ASM_EH_FRAME_SECTION \
|
| SMALL_ARG_MAX ASM_OUTPUT_SHARED_BSS ASM_OUTPUT_SHARED_COMMON \
|
| - ASM_OUTPUT_SHARED_LOCAL UNALIGNED_WORD_ASM_OP \
|
| - ASM_MAKE_LABEL_LINKONCE
|
| + ASM_OUTPUT_SHARED_LOCAL ASM_MAKE_LABEL_LINKONCE \
|
| + STACK_CHECK_PROBE_INTERVAL STACK_CHECK_PROBE_LOAD
|
|
|
| /* Hooks that are no longer used. */
|
| #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
|
| @@ -742,7 +769,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS \
|
| LANG_HOOKS_PUSHLEVEL LANG_HOOKS_SET_BLOCK \
|
| LANG_HOOKS_MAYBE_BUILD_CLEANUP LANG_HOOKS_UPDATE_DECL_AFTER_SAVING \
|
| - LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION
|
| + LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION \
|
| + TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN
|
|
|
| /* Miscellaneous macros that are no longer used. */
|
| #pragma GCC poison USE_MAPPED_LOCATION
|
| @@ -786,6 +814,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| change after the fact). Beyond these uses, most other cases of
|
| using this macro should be viewed with extreme caution. */
|
|
|
| +#ifdef __cplusplus
|
| +#define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast<TOTYPE> (X))
|
| +#else
|
| #if defined(__GNUC__) && GCC_VERSION > 4000
|
| /* GCC 4.0.x has a bug where it may ICE on this expression,
|
| so does GCC 3.4.x (PR17436). */
|
| @@ -793,6 +824,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
| #else
|
| #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X))
|
| #endif
|
| +#endif
|
| #define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X))
|
| #define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X))
|
| #define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X))
|
|
|