X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdefaults.h;h=d16adf4ad4a8ed891ce8d7d357ae266a1004be71;hb=a73be86cc6b63abb2a17e9358afde3c456eaf5df;hp=3071f1f35cd92001c1fff175b9de314a19ffaa56;hpb=ee0125fb19f196b322500085c0c0951c1ab4332c;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/defaults.h b/gcc/defaults.h index 3071f1f35cd..d16adf4ad4a 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1,5 +1,5 @@ /* Definitions of various defaults for tm.h macros. - Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com) @@ -23,33 +23,53 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifndef GCC_DEFAULTS_H #define GCC_DEFAULTS_H +#ifndef GET_ENVIRONMENT +#define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0) +#endif + +#define obstack_chunk_alloc ((void *(*) (long)) xmalloc) +#define obstack_chunk_free ((void (*) (void *)) free) +#define OBSTACK_CHUNK_SIZE 0 +#define gcc_obstack_init(OBSTACK) \ + _obstack_begin ((OBSTACK), OBSTACK_CHUNK_SIZE, 0, \ + obstack_chunk_alloc, \ + obstack_chunk_free) + /* Define default standard character escape sequences. */ #ifndef TARGET_BELL # define TARGET_BELL 007 # define TARGET_BS 010 -# define TARGET_TAB 011 -# define TARGET_NEWLINE 012 -# define TARGET_VT 013 -# define TARGET_FF 014 # define TARGET_CR 015 +# define TARGET_DIGIT0 060 # define TARGET_ESC 033 +# define TARGET_FF 014 +# define TARGET_NEWLINE 012 +# define TARGET_TAB 011 +# define TARGET_VT 013 #endif -/* Store in OUTPUT a string (made with alloca) containing - an assembler-name for a local static variable or function named NAME. +/* Store in OUTPUT a string (made with alloca) containing an + assembler-name for a local static variable or function named NAME. LABELNO is an integer which is different for each call. */ +#ifndef ASM_PN_FORMAT +# ifndef NO_DOT_IN_LABEL +# define ASM_PN_FORMAT "%s.%lu" +# else +# ifndef NO_DOLLAR_IN_LABEL +# define ASM_PN_FORMAT "%s$%lu" +# else +# define ASM_PN_FORMAT "__%s_%lu" +# endif +# endif +#endif /* ! ASM_PN_FORMAT */ + #ifndef ASM_FORMAT_PRIVATE_NAME -#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ - do { \ - int len = strlen (NAME); \ - char *temp = (char *) alloca (len + 3); \ - temp[0] = 'L'; \ - strcpy (&temp[1], (NAME)); \ - temp[len + 1] = '.'; \ - temp[len + 2] = 0; \ - (OUTPUT) = (char *) alloca (strlen (NAME) + 11); \ - ASM_GENERATE_INTERNAL_LABEL (OUTPUT, temp, LABELNO); \ +# define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ + do { const char *const name_ = (NAME); \ + char *const output_ = (OUTPUT) = \ + (char *) alloca (strlen (name_) + 32); \ + sprintf (output_, ASM_PN_FORMAT, name_, (unsigned long)(LABELNO)); \ } while (0) #endif @@ -62,19 +82,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifndef ASM_OUTPUT_ADDR_VEC_ELT #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ -do { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \ - ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", (VALUE)); \ +do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \ + (*targetm.asm_out.internal_label) (FILE, "L", (VALUE)); \ fputc ('\n', FILE); \ } while (0) #endif -/* Provide default for ASM_OUTPUT_ALTERNATE_LABEL_NAME. */ -#ifndef ASM_OUTPUT_ALTERNATE_LABEL_NAME -#define ASM_OUTPUT_ALTERNATE_LABEL_NAME(FILE,INSN) \ -do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) -#endif - -/* choose a reasonable default for ASM_OUTPUT_ASCII. */ +/* Choose a reasonable default for ASM_OUTPUT_ASCII. */ #ifndef ASM_OUTPUT_ASCII #define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \ @@ -127,6 +141,14 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #endif #endif +/* This is how to output the definition of a user-level label named + NAME, such as the label on a static function or variable NAME. */ + +#ifndef ASM_OUTPUT_LABEL +#define ASM_OUTPUT_LABEL(FILE,NAME) \ + do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0) +#endif + /* This is how to output a reference to a user-level label named NAME. */ #ifndef ASM_OUTPUT_LABELREF @@ -139,7 +161,7 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #ifndef ASM_OUTPUT_DEBUG_LABEL #define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \ - ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM) + (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM) #endif /* This is how we tell the assembler that a symbol is weak. */ @@ -156,6 +178,49 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #endif #endif +/* How to emit a .type directive. */ +#ifndef ASM_OUTPUT_TYPE_DIRECTIVE +#if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT +#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) \ + do \ + { \ + fputs (TYPE_ASM_OP, STREAM); \ + assemble_name (STREAM, NAME); \ + fputs (", ", STREAM); \ + fprintf (STREAM, TYPE_OPERAND_FMT, TYPE); \ + putc ('\n', STREAM); \ + } \ + while (0) +#endif +#endif + +/* How to emit a .size directive. */ +#ifndef ASM_OUTPUT_SIZE_DIRECTIVE +#ifdef SIZE_ASM_OP +#define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE) \ + do \ + { \ + HOST_WIDE_INT size_ = (SIZE); \ + fputs (SIZE_ASM_OP, STREAM); \ + assemble_name (STREAM, NAME); \ + fprintf (STREAM, ", " HOST_WIDE_INT_PRINT_DEC "\n", size_); \ + } \ + while (0) + +#define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME) \ + do \ + { \ + fputs (SIZE_ASM_OP, STREAM); \ + assemble_name (STREAM, NAME); \ + fputs (", .-", STREAM); \ + assemble_name (STREAM, NAME); \ + putc ('\n', STREAM); \ + } \ + while (0) + +#endif +#endif + /* This determines whether or not we support weak symbols. */ #ifndef SUPPORTS_WEAK #if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL) @@ -174,8 +239,27 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #endif #endif +/* This determines whether weak symbols must be left out of a static + archive's table of contents. Defining this macro to be nonzero has + the consequence that certain symbols will not be made weak that + otherwise would be. The C++ ABI requires this macro to be zero; + see the documentation. */ +#ifndef TARGET_WEAK_NOT_IN_ARCHIVE_TOC +#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 0 +#endif + +/* This determines whether or not we need linkonce unwind information */ +#ifndef TARGET_USES_WEAK_UNWIND_INFO +#define TARGET_USES_WEAK_UNWIND_INFO 0 +#endif + +/* By default, there is no prefix on user-defined symbols. */ +#ifndef USER_LABEL_PREFIX +#define USER_LABEL_PREFIX "" +#endif + /* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to - provide a weak attribute. Else define it to nothing. + provide a weak attribute. Else define it to nothing. This would normally belong in ansidecl.h, but SUPPORTS_WEAK is not available at that time. @@ -190,6 +274,24 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) # endif #endif +/* This determines whether this target supports hidden visibility. + This is a weaker condition than HAVE_GAS_HIDDEN, which probes for + specific assembler syntax. */ +#ifndef TARGET_SUPPORTS_HIDDEN +# ifdef HAVE_GAS_HIDDEN +# define TARGET_SUPPORTS_HIDDEN 1 +# else +# define TARGET_SUPPORTS_HIDDEN 0 +# endif +#endif + +/* Determines whether we may use common symbols to represent one-only + semantics (a.k.a. "vague linkage"). */ +#ifndef USE_COMMON_FOR_ONE_ONLY +# define USE_COMMON_FOR_ONE_ONLY 1 +#endif + + /* If the target supports init_priority C++ attribute, give SUPPORTS_INIT_PRIORITY a nonzero value. */ #ifndef SUPPORTS_INIT_PRIORITY @@ -211,7 +313,8 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) /* If we have named sections, and we're using crtstuff to run ctors, use them for registering eh frame information. */ -#if defined (TARGET_ASM_NAMED_SECTION) && !defined(EH_FRAME_IN_DATA_SECTION) +#if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \ + && !defined(EH_FRAME_IN_DATA_SECTION) #ifndef EH_FRAME_SECTION_NAME #define EH_FRAME_SECTION_NAME ".eh_frame" #endif @@ -226,31 +329,9 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #endif #endif -/* If we have no definition for UNIQUE_SECTION, but do have the - ability to generate arbitrary sections, construct something - reasonable. */ -#ifndef UNIQUE_SECTION -#define UNIQUE_SECTION(DECL,RELOC) \ -do { \ - int len; \ - const char *name; \ - char *string; \ - \ - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \ - /* Strip off any encoding in name. */ \ - STRIP_NAME_ENCODING (name, name); \ - \ - len = strlen (name) + 1; \ - string = alloca (len + 1); \ - sprintf (string, ".%s", name); \ - \ - DECL_SECTION_NAME (DECL) = build_string (len, string); \ -} while (0) -#endif - /* By default, we generate a label at the beginning and end of the text section, and compute the size of the text section by - subtracting the two. However, on some platforms that doesn't + subtracting the two. However, on some platforms that doesn't work, and we use the section itself, rather than a label at the beginning of it, to indicate the start of the section. On such platforms, define this to zero. */ @@ -258,11 +339,6 @@ do { \ #define DWARF2_GENERATE_TEXT_SECTION_LABEL 1 #endif -/* Supply a default definition for PROMOTE_PROTOTYPES. */ -#ifndef PROMOTE_PROTOTYPES -#define PROMOTE_PROTOTYPES 0 -#endif - /* Number of hardware registers that go into the DWARF-2 unwind info. If not defined, equals FIRST_PSEUDO_REGISTER */ @@ -281,10 +357,23 @@ do { \ your target, you should override these values by defining the appropriate symbols in your tm.h file. */ +#ifndef BITS_PER_UNIT +#define BITS_PER_UNIT 8 +#endif + +#ifndef BITS_PER_WORD +#define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD) +#endif + #ifndef CHAR_TYPE_SIZE #define CHAR_TYPE_SIZE BITS_PER_UNIT #endif +#ifndef BOOL_TYPE_SIZE +/* `bool' has size and alignment `1', on almost all platforms. */ +#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE +#endif + #ifndef SHORT_TYPE_SIZE #define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2)) #endif @@ -305,10 +394,6 @@ do { \ #define WCHAR_TYPE_SIZE INT_TYPE_SIZE #endif -#ifndef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 -#endif - #ifndef FLOAT_TYPE_SIZE #define FLOAT_TYPE_SIZE BITS_PER_WORD #endif @@ -321,22 +406,28 @@ do { \ #define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) #endif -#ifndef BUILD_VA_LIST_TYPE -#define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node) +/* Width in bits of a pointer. Mind the value of the macro `Pmode'. */ +#ifndef POINTER_SIZE +#define POINTER_SIZE BITS_PER_WORD #endif #ifndef PIC_OFFSET_TABLE_REGNUM #define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM #endif -/* Type used by GCOV counters. Use 64bit data type if target supports - it. */ -#if LONG_TYPE_SIZE >= 64 -#define GCOV_TYPE_SIZE LONG_TYPE_SIZE -#else -#define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE +#ifndef TARGET_DLLIMPORT_DECL_ATTRIBUTES +#define TARGET_DLLIMPORT_DECL_ATTRIBUTES 0 #endif +#ifndef TARGET_DECLSPEC +#if TARGET_DLLIMPORT_DECL_ATTRIBUTES +/* If the target supports the "dllimport" attribute, users are + probably used to the "__declspec" syntax. */ +#define TARGET_DECLSPEC 1 +#else +#define TARGET_DECLSPEC 0 +#endif +#endif /* By default, the preprocessor should be invoked the same way in C++ as in C. */ @@ -359,6 +450,26 @@ do { \ #endif #endif +/* Decide whether a function's arguments should be processed + from first to last or from last to first. + + They should if the stack and args grow in opposite directions, but + only if we have push insns. */ + +#ifdef PUSH_ROUNDING + +#ifndef PUSH_ARGS_REVERSED +#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) +#define PUSH_ARGS_REVERSED PUSH_ARGS +#endif +#endif + +#endif + +#ifndef PUSH_ARGS_REVERSED +#define PUSH_ARGS_REVERSED 0 +#endif + /* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. STACK_BOUNDARY is required. */ #ifndef PREFERRED_STACK_BOUNDARY @@ -366,15 +477,41 @@ do { \ #endif /* By default, the C++ compiler will use function addresses in the - vtable entries. Setting this non-zero tells the compiler to use + vtable entries. Setting this nonzero tells the compiler to use function descriptors instead. The value of this macro says how - many words wide the descriptor is (normally 2). It is assumed + many words wide the descriptor is (normally 2). It is assumed that the address of a function descriptor may be treated as a pointer to a function. */ #ifndef TARGET_VTABLE_USES_DESCRIPTORS #define TARGET_VTABLE_USES_DESCRIPTORS 0 #endif +/* By default, the vtable entries are void pointers, the so the alignment + is the same as pointer alignment. The value of this macro specifies + the alignment of the vtable entry in bits. It should be defined only + when special alignment is necessary. */ +#ifndef TARGET_VTABLE_ENTRY_ALIGN +#define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE +#endif + +/* There are a few non-descriptor entries in the vtable at offsets below + zero. If these entries must be padded (say, to preserve the alignment + specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of + words in each data entry. */ +#ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE +#define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1 +#endif + +/* Decide whether it is safe to use a local alias for a virtual function + when constructing thunks. */ +#ifndef TARGET_USE_LOCAL_THUNK_ALIAS_P +#ifdef ASM_OUTPUT_DEF +#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 1 +#else +#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 0 +#endif +#endif + /* Select a format to encode pointers in exception handling data. We prefer those that result in fewer dynamic relocations. Assume no special support here and encode direct references. */ @@ -393,61 +530,52 @@ do { \ ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta) #endif -/* True if it is possible to profile code that does not have a frame - pointer. */ - -#ifndef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER -#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER true -#endif - #ifndef DEFAULT_GDB_EXTENSIONS #define DEFAULT_GDB_EXTENSIONS 1 #endif /* If more than one debugging type is supported, you must define - PREFERRED_DEBUGGING_TYPE to choose a format in a system-dependent way. + PREFERRED_DEBUGGING_TYPE to choose the default. */ - This is one long line cause VAXC can't handle a \-newline. */ -#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) + defined (DWARF_DEBUGGING_INFO) + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) + defined (VMS_DEBUGGING_INFO)) +#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) \ + + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) \ + + defined (VMS_DEBUGGING_INFO)) #ifndef PREFERRED_DEBUGGING_TYPE -You Lose! You must define PREFERRED_DEBUGGING_TYPE! +#error You must define PREFERRED_DEBUGGING_TYPE #endif /* no PREFERRED_DEBUGGING_TYPE */ -#else /* Only one debugging format supported. Define PREFERRED_DEBUGGING_TYPE - so other code needn't care. */ -#ifdef DBX_DEBUGGING_INFO + +/* If only one debugging format is supported, define PREFERRED_DEBUGGING_TYPE + here so other code needn't care. */ +#elif defined DBX_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG -#endif -#ifdef SDB_DEBUGGING_INFO + +#elif defined SDB_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG -#endif -#ifdef DWARF_DEBUGGING_INFO -#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG -#endif -#ifdef DWARF2_DEBUGGING_INFO + +#elif defined DWARF2_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG -#endif -#ifdef VMS_DEBUGGING_INFO + +#elif defined VMS_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG -#endif -#ifdef XCOFF_DEBUGGING_INFO + +#elif defined XCOFF_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG -#endif -#endif /* More than one debugger format enabled. */ -/* If still not defined, must have been because no debugging formats - are supported. */ -#ifndef PREFERRED_DEBUGGING_TYPE +#else +/* No debugging format is supported by this target. */ #define PREFERRED_DEBUGGING_TYPE NO_DEBUG #endif -/* This is set to 1 if BYTES_BIG_ENDIAN is defined but the target uses a - little-endian method of passing and returning structures in registers. - On the HP-UX IA64 and PA64 platforms structures are aligned differently - then integral values and setting this value to 1 will allow for the - special handling of structure arguments and return values in regs. */ +/* Define codes for all the float formats that we know of. */ +#define UNKNOWN_FLOAT_FORMAT 0 +#define IEEE_FLOAT_FORMAT 1 +#define VAX_FLOAT_FORMAT 2 +#define IBM_FLOAT_FORMAT 3 +#define C4X_FLOAT_FORMAT 4 -#ifndef FUNCTION_ARG_REG_LITTLE_ENDIAN -#define FUNCTION_ARG_REG_LITTLE_ENDIAN 0 +/* Default to IEEE float if not specified. Nearly all machines use it. */ +#ifndef TARGET_FLOAT_FORMAT +#define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT #endif /* Determine the register class for registers suitable to be the base @@ -457,4 +585,213 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! #define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS #endif +#ifndef LARGEST_EXPONENT_IS_NORMAL +#define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 +#endif + +#ifndef ROUND_TOWARDS_ZERO +#define ROUND_TOWARDS_ZERO 0 +#endif + +#ifndef MODE_HAS_NANS +#define MODE_HAS_NANS(MODE) \ + (FLOAT_MODE_P (MODE) \ + && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ + && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) +#endif + +#ifndef MODE_HAS_INFINITIES +#define MODE_HAS_INFINITIES(MODE) \ + (FLOAT_MODE_P (MODE) \ + && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ + && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) +#endif + +#ifndef MODE_HAS_SIGNED_ZEROS +#define MODE_HAS_SIGNED_ZEROS(MODE) \ + (FLOAT_MODE_P (MODE) && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT) +#endif + +#ifndef MODE_HAS_SIGN_DEPENDENT_ROUNDING +#define MODE_HAS_SIGN_DEPENDENT_ROUNDING(MODE) \ + (FLOAT_MODE_P (MODE) \ + && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ + && !ROUND_TOWARDS_ZERO) +#endif + +#ifndef FLOAT_LIB_COMPARE_RETURNS_BOOL +#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) false +#endif + +/* True if the targets integer-comparision fucntions return { 0, 1, 2 + } to indicate { <, ==, > }. False if { -1, 0, 1 } is used + instead. The libgcc routines are biased. */ +#ifndef TARGET_LIB_INT_CMP_BIASED +#define TARGET_LIB_INT_CMP_BIASED (true) +#endif + +/* If FLOAT_WORDS_BIG_ENDIAN is not defined in the header files, + then the word-endianness is the same as for integers. */ +#ifndef FLOAT_WORDS_BIG_ENDIAN +#define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN +#endif + +#ifndef TARGET_FLT_EVAL_METHOD +#define TARGET_FLT_EVAL_METHOD 0 +#endif + +#ifndef HOT_TEXT_SECTION_NAME +#define HOT_TEXT_SECTION_NAME ".text.hot" +#endif + +#ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME +#define UNLIKELY_EXECUTED_TEXT_SECTION_NAME ".text.unlikely" +#endif + +#ifndef HAS_LONG_COND_BRANCH +#define HAS_LONG_COND_BRANCH 0 +#endif + +#ifndef HAS_LONG_UNCOND_BRANCH +#define HAS_LONG_UNCOND_BRANCH 0 +#endif + +#ifndef UNITS_PER_SIMD_WORD +#define UNITS_PER_SIMD_WORD 0 +#endif + +/* Determine whether __cxa_atexit, rather than atexit, is used to + register C++ destructors for local statics and global objects. */ +#ifndef DEFAULT_USE_CXA_ATEXIT +#define DEFAULT_USE_CXA_ATEXIT 0 +#endif + +/* Determine whether extra constraint letter should be handled + via address reload (like 'o'). */ +#ifndef EXTRA_MEMORY_CONSTRAINT +#define EXTRA_MEMORY_CONSTRAINT(C,STR) 0 +#endif + +/* Determine whether extra constraint letter should be handled + as an address (like 'p'). */ +#ifndef EXTRA_ADDRESS_CONSTRAINT +#define EXTRA_ADDRESS_CONSTRAINT(C,STR) 0 +#endif + +/* When a port defines CONSTRAINT_LEN, it should use DEFAULT_CONSTRAINT_LEN + for all the characters that it does not want to change, so things like the + 'length' of a digit in a matching constraint is an implementation detail, + and not part of the interface. */ +#define DEFAULT_CONSTRAINT_LEN(C,STR) 1 + +#ifndef CONSTRAINT_LEN +#define CONSTRAINT_LEN(C,STR) DEFAULT_CONSTRAINT_LEN (C, STR) +#endif + +#if defined (CONST_OK_FOR_LETTER_P) && ! defined (CONST_OK_FOR_CONSTRAINT_P) +#define CONST_OK_FOR_CONSTRAINT_P(VAL,C,STR) CONST_OK_FOR_LETTER_P (VAL, C) +#endif + +#if defined (CONST_DOUBLE_OK_FOR_LETTER_P) && ! defined (CONST_DOUBLE_OK_FOR_CONSTRAINT_P) +#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(OP,C,STR) \ + CONST_DOUBLE_OK_FOR_LETTER_P (OP, C) +#endif + +#ifndef REG_CLASS_FROM_CONSTRAINT +#define REG_CLASS_FROM_CONSTRAINT(C,STR) REG_CLASS_FROM_LETTER (C) +#endif + +#if defined (EXTRA_CONSTRAINT) && ! defined (EXTRA_CONSTRAINT_STR) +#define EXTRA_CONSTRAINT_STR(OP, C,STR) EXTRA_CONSTRAINT (OP, C) +#endif + +#ifndef REGISTER_MOVE_COST +#define REGISTER_MOVE_COST(m, x, y) 2 +#endif + +/* Determine whether the the entire c99 runtime + is present in the runtime library. */ +#ifndef TARGET_C99_FUNCTIONS +#define TARGET_C99_FUNCTIONS 0 +#endif + +/* Indicate that CLZ and CTZ are undefined at zero. */ +#ifndef CLZ_DEFINED_VALUE_AT_ZERO +#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 +#endif +#ifndef CTZ_DEFINED_VALUE_AT_ZERO +#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 +#endif + +/* Provide a default value for STORE_FLAG_VALUE. */ +#ifndef STORE_FLAG_VALUE +#define STORE_FLAG_VALUE 1 +#endif + +/* This macro is used to determine what the largest unit size that + move_by_pieces can use is. */ + +/* MOVE_MAX_PIECES is the number of bytes at a time which we can + move efficiently, as opposed to MOVE_MAX which is the maximum + number of bytes we can move with a single instruction. */ + +#ifndef MOVE_MAX_PIECES +#define MOVE_MAX_PIECES MOVE_MAX +#endif + +#ifndef STACK_POINTER_OFFSET +#define STACK_POINTER_OFFSET 0 +#endif + +#ifndef LOCAL_REGNO +#define LOCAL_REGNO(REGNO) 0 +#endif + +/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, + the stack pointer does not matter. The value is tested only in + functions that have frame pointers. */ +#ifndef EXIT_IGNORE_STACK +#define EXIT_IGNORE_STACK 0 +#endif + +/* Assume that case vectors are not pc-relative. */ +#ifndef CASE_VECTOR_PC_RELATIVE +#define CASE_VECTOR_PC_RELATIVE 0 +#endif + +/* Assume that trampolines need function alignment. */ +#ifndef TRAMPOLINE_ALIGNMENT +#define TRAMPOLINE_ALIGNMENT FUNCTION_BOUNDARY +#endif + +/* Register mappings for target machines without register windows. */ +#ifndef INCOMING_REGNO +#define INCOMING_REGNO(N) (N) +#endif + +#ifndef OUTGOING_REGNO +#define OUTGOING_REGNO(N) (N) +#endif + +#ifndef SHIFT_COUNT_TRUNCATED +#define SHIFT_COUNT_TRUNCATED 0 +#endif + +#ifndef LEGITIMIZE_ADDRESS +#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) +#endif + +#ifndef LEGITIMATE_PIC_OPERAND_P +#define LEGITIMATE_PIC_OPERAND_P(X) 1 +#endif + +#ifndef REVERSIBLE_CC_MODE +#define REVERSIBLE_CC_MODE(MODE) 0 +#endif + +/* Biggest alignment supported by the object file format of this machine. */ +#ifndef MAX_OFILE_ALIGNMENT +#define MAX_OFILE_ALIGNMENT BIGGEST_ALIGNMENT +#endif + #endif /* ! GCC_DEFAULTS_H */