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)) |