mirror of git://gcc.gnu.org/git/gcc.git
cppbuiltin.c (define_builtin_macros_for_type_sizes): Define __BYTE_ORDER__...
gcc/ * cppbuiltin.c (define_builtin_macros_for_type_sizes): Define __BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__, __ORDER_BIG_ENDIAN__, and __ORDER_PDP_ENDIAN__. * libgcc2.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. (struct DWstruct): Define based on __BYTE_ORDER__. * config/fixed-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. (struct INTstruct): Define based on __BYTE_ORDER__. * config/dfp-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__. * system.h (LIBGCC2_WORDS_BIG_ENDIAN): Poison identifier. * config/arc/arc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/arm/arm.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/ia64/ia64.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/iq2000/iq2000.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/lm32/lm32.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/m32r/m32r.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/mcore/mcore.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/mep/mep.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/mips/mips.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/rx/rx.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/score/score.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/sh/sh.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/sparc/sparc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * config/xtensa/xtensa.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * doc/tm.texi.in (LIBGCC2_WORDS_BIG_ENDIAN): Delete. * doc/tm.texi: Regenerate. * doc/cpp.texi (__BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__): Document. (__ORDER_BIG_ENDIAN__, __ORDER_PDP_ENDIAN__): Likewise. libdecnumber/ * dconfig.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__. libgcc/ * config/libbid/bid_gcc_intrinsics.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__. From-SVN: r165881
This commit is contained in:
parent
646e6f415c
commit
18ed6ee4bf
|
@ -1,3 +1,35 @@
|
||||||
|
2010-10-23 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* cppbuiltin.c (define_builtin_macros_for_type_sizes): Define
|
||||||
|
__BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__, __ORDER_BIG_ENDIAN__, and
|
||||||
|
__ORDER_PDP_ENDIAN__.
|
||||||
|
* libgcc2.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
(struct DWstruct): Define based on __BYTE_ORDER__.
|
||||||
|
* config/fixed-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
(struct INTstruct): Define based on __BYTE_ORDER__.
|
||||||
|
* config/dfp-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
|
||||||
|
* system.h (LIBGCC2_WORDS_BIG_ENDIAN): Poison identifier.
|
||||||
|
* config/arc/arc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/arm/arm.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/ia64/ia64.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/iq2000/iq2000.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/lm32/lm32.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/m32r/m32r.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/mcore/mcore.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/mep/mep.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/mips/mips.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/rx/rx.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/score/score.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/sh/sh.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/sparc/sparc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* config/xtensa/xtensa.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* doc/tm.texi.in (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
* doc/tm.texi: Regenerate.
|
||||||
|
* doc/cpp.texi (__BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__): Document.
|
||||||
|
(__ORDER_BIG_ENDIAN__, __ORDER_PDP_ENDIAN__): Likewise.
|
||||||
|
|
||||||
2010-10-23 Jie Zhang <jie@codesourcery.com>
|
2010-10-23 Jie Zhang <jie@codesourcery.com>
|
||||||
|
|
||||||
PR rtl-optimization/37360
|
PR rtl-optimization/37360
|
||||||
|
|
|
@ -99,14 +99,6 @@ extern int arc_cpu_type;
|
||||||
numbered. */
|
numbered. */
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#ifdef __big_endian__
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
||||||
|
|
|
@ -556,14 +556,6 @@ extern int arm_arch_hwdiv;
|
||||||
This is always false, even when in big-endian mode. */
|
This is always false, even when in big-endian mode. */
|
||||||
#define WORDS_BIG_ENDIAN (BYTES_BIG_ENDIAN && ! TARGET_LITTLE_WORDS)
|
#define WORDS_BIG_ENDIAN (BYTES_BIG_ENDIAN && ! TARGET_LITTLE_WORDS)
|
||||||
|
|
||||||
/* LIBGCC2_WORDS_BIG_ENDIAN has to be a constant, so we define this based
|
|
||||||
on processor pre-defineds when compiling libgcc2.c. */
|
|
||||||
#if defined(__ARMEB__) && !defined(__ARMWEL__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define this if most significant word of doubles is the lowest numbered.
|
/* Define this if most significant word of doubles is the lowest numbered.
|
||||||
The rules are different based on whether or not we use FPA-format,
|
The rules are different based on whether or not we use FPA-format,
|
||||||
VFP-format or some other floating point co-processor's format doubles. */
|
VFP-format or some other floating point co-processor's format doubles. */
|
||||||
|
|
|
@ -33,12 +33,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
#include "coretypes.h"
|
#include "coretypes.h"
|
||||||
#include "tm.h"
|
#include "tm.h"
|
||||||
|
|
||||||
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
||||||
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
|
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN \
|
||||||
|
(__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
||||||
|
|
|
@ -41,14 +41,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
Ex: If we define FROM_QQ and TO_SI, the conversion from QQ to SI is
|
Ex: If we define FROM_QQ and TO_SI, the conversion from QQ to SI is
|
||||||
generated. */
|
generated. */
|
||||||
|
|
||||||
/* Permit the tm.h file to select the endianness to use just for this
|
|
||||||
file. This is used when the endianness is determined when the
|
|
||||||
compiler is run. */
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
||||||
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
|
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
@ -428,7 +420,7 @@ typedef int word_type __attribute__ ((mode (__word__)));
|
||||||
/* The following defines are based on the previous defines. */
|
/* The following defines are based on the previous defines. */
|
||||||
|
|
||||||
#if defined (HINT_C_TYPE)
|
#if defined (HINT_C_TYPE)
|
||||||
#if LIBGCC2_WORDS_BIG_ENDIAN
|
#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
|
||||||
struct INTstruct {HINT_C_TYPE high, low;};
|
struct INTstruct {HINT_C_TYPE high, low;};
|
||||||
#else
|
#else
|
||||||
struct INTstruct {HINT_C_TYPE low, high;};
|
struct INTstruct {HINT_C_TYPE low, high;};
|
||||||
|
|
|
@ -148,12 +148,6 @@ extern enum processor_type ia64_tune;
|
||||||
|
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
||||||
|
|
||||||
#if defined(__BIG_ENDIAN__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UNITS_PER_WORD 8
|
#define UNITS_PER_WORD 8
|
||||||
|
|
||||||
#define POINTER_SIZE (TARGET_ILP32 ? 32 : 64)
|
#define POINTER_SIZE (TARGET_ILP32 ? 32 : 64)
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
#define BITS_BIG_ENDIAN 0
|
#define BITS_BIG_ENDIAN 0
|
||||||
#define BYTES_BIG_ENDIAN 1
|
#define BYTES_BIG_ENDIAN 1
|
||||||
#define WORDS_BIG_ENDIAN 1
|
#define WORDS_BIG_ENDIAN 1
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#define BITS_PER_WORD 32
|
#define BITS_PER_WORD 32
|
||||||
#define MAX_BITS_PER_WORD 64
|
#define MAX_BITS_PER_WORD 64
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
|
@ -84,7 +84,6 @@
|
||||||
#define BITS_BIG_ENDIAN 0
|
#define BITS_BIG_ENDIAN 0
|
||||||
#define BYTES_BIG_ENDIAN 1
|
#define BYTES_BIG_ENDIAN 1
|
||||||
#define WORDS_BIG_ENDIAN 1
|
#define WORDS_BIG_ENDIAN 1
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
|
|
||||||
#define BITS_PER_UNIT 8
|
#define BITS_PER_UNIT 8
|
||||||
#define BITS_PER_WORD 32
|
#define BITS_PER_WORD 32
|
||||||
|
|
|
@ -319,12 +319,6 @@ extern enum m32r_sdata m32r_sdata;
|
||||||
numbered. */
|
numbered. */
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
||||||
|
|
||||||
/* Define this macro if WORDS_BIG_ENDIAN is not constant. This must
|
|
||||||
be a constant value with the same meaning as WORDS_BIG_ENDIAN,
|
|
||||||
which will be used only when compiling libgcc2.c. Typically the
|
|
||||||
value will be set based on preprocessor defines. */
|
|
||||||
/*#define LIBGCC2_WORDS_BIG_ENDIAN 1*/
|
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
||||||
|
|
|
@ -106,12 +106,6 @@ extern char * mcore_current_function_name;
|
||||||
numbered. */
|
numbered. */
|
||||||
#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_END)
|
#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_END)
|
||||||
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#ifdef __MCORELE__
|
|
||||||
#undef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BITS_PER_WORD 32
|
#define MAX_BITS_PER_WORD 32
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
|
|
|
@ -165,12 +165,6 @@ crtbegin.o%s"
|
||||||
#define BYTES_BIG_ENDIAN (TARGET_LITTLE_ENDIAN ? 0 : 1)
|
#define BYTES_BIG_ENDIAN (TARGET_LITTLE_ENDIAN ? 0 : 1)
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN ? 0 : 1)
|
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN ? 0 : 1)
|
||||||
|
|
||||||
#ifdef __LITTLE_ENDIAN__
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
||||||
#define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \
|
#define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \
|
||||||
|
|
|
@ -1287,14 +1287,6 @@ enum mips_code_readable_setting {
|
||||||
#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#if !defined(MIPSEL) && !defined(__MIPSEL__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BITS_PER_WORD 64
|
#define MAX_BITS_PER_WORD 64
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
|
|
|
@ -258,14 +258,6 @@ do { \
|
||||||
#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN)
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#if !defined(__LITTLE_ENDIAN__) && !defined(__sun__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define cutoff for using external functions to save floating point.
|
/* Define cutoff for using external functions to save floating point.
|
||||||
When optimizing for size, use external functions when profitable. */
|
When optimizing for size, use external functions when profitable. */
|
||||||
#define FP_SAVE_INLINE(FIRST_REG) (optimize_size \
|
#define FP_SAVE_INLINE(FIRST_REG) (optimize_size \
|
||||||
|
|
|
@ -96,12 +96,6 @@ extern enum rx_cpu_types rx_cpu_type;
|
||||||
#define BYTES_BIG_ENDIAN TARGET_BIG_ENDIAN_DATA
|
#define BYTES_BIG_ENDIAN TARGET_BIG_ENDIAN_DATA
|
||||||
#define WORDS_BIG_ENDIAN TARGET_BIG_ENDIAN_DATA
|
#define WORDS_BIG_ENDIAN TARGET_BIG_ENDIAN_DATA
|
||||||
|
|
||||||
#ifdef __RX_BIG_ENDIAN__
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
||||||
#define INT_TYPE_SIZE 32
|
#define INT_TYPE_SIZE 32
|
||||||
|
|
|
@ -103,14 +103,6 @@
|
||||||
#define BYTES_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
#define BYTES_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#if defined(__scorele__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
#define UNITS_PER_WORD 4
|
#define UNITS_PER_WORD 4
|
||||||
|
|
||||||
|
|
|
@ -516,14 +516,6 @@ extern enum sh_divide_strategy_e sh_div_strategy;
|
||||||
numbered. */
|
numbered. */
|
||||||
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#if defined(__LITTLE_ENDIAN__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BITS_PER_WORD 64
|
#define MAX_BITS_PER_WORD 64
|
||||||
|
|
||||||
/* Width in bits of an `int'. We want just 32-bits, even if words are
|
/* Width in bits of an `int'. We want just 32-bits, even if words are
|
||||||
|
|
|
@ -582,14 +582,6 @@ extern struct sparc_cpu_select sparc_select[];
|
||||||
numbered. */
|
numbered. */
|
||||||
#define WORDS_BIG_ENDIAN 1
|
#define WORDS_BIG_ENDIAN 1
|
||||||
|
|
||||||
/* Define this to set the endianness to use in libgcc2.c, which can
|
|
||||||
not depend on target_flags. */
|
|
||||||
#if defined (__LITTLE_ENDIAN__) || defined(__LITTLE_ENDIAN_DATA__)
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BITS_PER_WORD 64
|
#define MAX_BITS_PER_WORD 64
|
||||||
|
|
||||||
/* Width of a word, in units (bytes). */
|
/* Width of a word, in units (bytes). */
|
||||||
|
|
|
@ -94,13 +94,6 @@ extern unsigned xtensa_current_frame_size;
|
||||||
#define EXTRA_SPECS \
|
#define EXTRA_SPECS \
|
||||||
{ "subtarget_cpp_spec", SUBTARGET_CPP_SPEC },
|
{ "subtarget_cpp_spec", SUBTARGET_CPP_SPEC },
|
||||||
|
|
||||||
#ifdef __XTENSA_EB__
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 1
|
|
||||||
#else
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Target machine storage layout */
|
/* Target machine storage layout */
|
||||||
|
|
||||||
/* Define this if most significant bit is lowest numbered
|
/* Define this if most significant bit is lowest numbered
|
||||||
|
|
|
@ -138,6 +138,24 @@ define_builtin_macros_for_type_sizes (cpp_reader *pfile)
|
||||||
cpp_define_formatted (pfile, "__BIGGEST_ALIGNMENT__=%d",
|
cpp_define_formatted (pfile, "__BIGGEST_ALIGNMENT__=%d",
|
||||||
BIGGEST_ALIGNMENT / BITS_PER_UNIT);
|
BIGGEST_ALIGNMENT / BITS_PER_UNIT);
|
||||||
|
|
||||||
|
/* Define constants useful for implementing endian.h. */
|
||||||
|
cpp_define (pfile, "__ORDER_LITTLE_ENDIAN__=1234");
|
||||||
|
cpp_define (pfile, "__ORDER_BIG_ENDIAN__=4321");
|
||||||
|
cpp_define (pfile, "__ORDER_PDP_ENDIAN__=3412");
|
||||||
|
|
||||||
|
if (WORDS_BIG_ENDIAN == BYTES_BIG_ENDIAN)
|
||||||
|
cpp_define_formatted (pfile, "__BYTE_ORDER__=%s",
|
||||||
|
(WORDS_BIG_ENDIAN
|
||||||
|
? "__ORDER_BIG_ENDIAN__"
|
||||||
|
: "__ORDER_LITTLE_ENDIAN__"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Assert that we're only dealing with the PDP11 case. */
|
||||||
|
gcc_assert (!BYTES_BIG_ENDIAN && WORDS_BIG_ENDIAN);
|
||||||
|
|
||||||
|
cpp_define (pfile, "__BYTE_ORDER__=__ORDER_PDP_ENDIAN__");
|
||||||
|
}
|
||||||
|
|
||||||
/* ptr_type_node can't be used here since ptr_mode is only set when
|
/* ptr_type_node can't be used here since ptr_mode is only set when
|
||||||
toplev calls backend_init which is not done with -E switch. */
|
toplev calls backend_init which is not done with -E switch. */
|
||||||
cpp_define_formatted (pfile, "__SIZEOF_POINTER__=%d",
|
cpp_define_formatted (pfile, "__SIZEOF_POINTER__=%d",
|
||||||
|
|
|
@ -2265,6 +2265,30 @@ Defined to the number of bytes of the C standard data types: @code{int},
|
||||||
@code{double}, @code{long double}, @code{size_t}, @code{wchar_t}, @code{wint_t}
|
@code{double}, @code{long double}, @code{size_t}, @code{wchar_t}, @code{wint_t}
|
||||||
and @code{ptrdiff_t}.
|
and @code{ptrdiff_t}.
|
||||||
|
|
||||||
|
@item __BYTE_ORDER__
|
||||||
|
@itemx __ORDER_LITTLE_ENDIAN__
|
||||||
|
@itemx __ORDER_BIG_ENDIAN__
|
||||||
|
@itemx __ORDER_PDP_ENDIAN__
|
||||||
|
@code{__BYTE_ORDER__} is defined to one of the values
|
||||||
|
@code{__ORDER_LITTLE_ENDIAN__}, @code{__ORDER_BIG_ENDIAN__}, or
|
||||||
|
@code{__ORDER_PDP_ENDIAN__} to reflect the layout of multi-byte and
|
||||||
|
multi-word quantities in memory. If @code{__BYTE_ORDER__} is equal to
|
||||||
|
@code{__ORDER_LITTLE_ENDIAN__} or @code{__ORDER_BIG_ENDIAN__}, then
|
||||||
|
multi-byte and multi-word quantities are laid out identically: the
|
||||||
|
byte (word) at the lowest address is the least significant or most
|
||||||
|
significant byte (word) of the quantity, respectively. If
|
||||||
|
@code{__BYTE_ORDER__} is equal to @code{__ORDER_PDP_ENDIAN__}, then
|
||||||
|
bytes in 16-bit words are laid out in a little-endian fashion, whereas
|
||||||
|
the 16-bit subwords of a 32-bit quantity are laid out in big-endian
|
||||||
|
fashion.
|
||||||
|
|
||||||
|
You should use these macros for testing like this:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
/* @r{Test for a little-endian machine} */
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
@item __DEPRECATED
|
@item __DEPRECATED
|
||||||
This macro is defined, with value 1, when compiling a C++ source file
|
This macro is defined, with value 1, when compiling a C++ source file
|
||||||
with warnings about deprecated constructs enabled. These warnings are
|
with warnings about deprecated constructs enabled. These warnings are
|
||||||
|
|
|
@ -918,13 +918,6 @@ order of words in memory is the same as the order in registers. This
|
||||||
macro need not be a constant.
|
macro need not be a constant.
|
||||||
@end defmac
|
@end defmac
|
||||||
|
|
||||||
@defmac LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a
|
|
||||||
constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
|
|
||||||
used only when compiling @file{libgcc2.c}. Typically the value will be set
|
|
||||||
based on preprocessor defines.
|
|
||||||
@end defmac
|
|
||||||
|
|
||||||
@defmac FLOAT_WORDS_BIG_ENDIAN
|
@defmac FLOAT_WORDS_BIG_ENDIAN
|
||||||
Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
|
Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
|
||||||
@code{TFmode} floating point numbers are stored in memory with the word
|
@code{TFmode} floating point numbers are stored in memory with the word
|
||||||
|
|
|
@ -912,13 +912,6 @@ order of words in memory is the same as the order in registers. This
|
||||||
macro need not be a constant.
|
macro need not be a constant.
|
||||||
@end defmac
|
@end defmac
|
||||||
|
|
||||||
@defmac LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a
|
|
||||||
constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
|
|
||||||
used only when compiling @file{libgcc2.c}. Typically the value will be set
|
|
||||||
based on preprocessor defines.
|
|
||||||
@end defmac
|
|
||||||
|
|
||||||
@defmac FLOAT_WORDS_BIG_ENDIAN
|
@defmac FLOAT_WORDS_BIG_ENDIAN
|
||||||
Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
|
Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
|
||||||
@code{TFmode} floating point numbers are stored in memory with the word
|
@code{TFmode} floating point numbers are stored in memory with the word
|
||||||
|
|
|
@ -35,14 +35,6 @@ extern void __clear_cache (char *, char *);
|
||||||
extern void __eprintf (const char *, const char *, unsigned int, const char *)
|
extern void __eprintf (const char *, const char *, unsigned int, const char *)
|
||||||
__attribute__ ((__noreturn__));
|
__attribute__ ((__noreturn__));
|
||||||
|
|
||||||
/* Permit the tm.h file to select the endianness to use just for this
|
|
||||||
file. This is used when the endianness is determined when the
|
|
||||||
compiler is run. */
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
||||||
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
|
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
@ -407,9 +399,9 @@ extern TCtype __multc3 (TFtype, TFtype, TFtype, TFtype);
|
||||||
#define int bogus_type
|
#define int bogus_type
|
||||||
|
|
||||||
/* DWstructs are pairs of Wtype values in the order determined by
|
/* DWstructs are pairs of Wtype values in the order determined by
|
||||||
LIBGCC2_WORDS_BIG_ENDIAN. */
|
__BYTE_ORDER__. */
|
||||||
|
|
||||||
#if LIBGCC2_WORDS_BIG_ENDIAN
|
#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
|
||||||
struct DWstruct {Wtype high, low;};
|
struct DWstruct {Wtype high, low;};
|
||||||
#else
|
#else
|
||||||
struct DWstruct {Wtype low, high;};
|
struct DWstruct {Wtype low, high;};
|
||||||
|
|
|
@ -790,7 +790,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
||||||
TARGET_HANDLE_OFAST TARGET_OPTION_OPTIMIZATION
|
TARGET_HANDLE_OFAST TARGET_OPTION_OPTIMIZATION
|
||||||
|
|
||||||
/* Hooks into libgcc2. */
|
/* Hooks into libgcc2. */
|
||||||
#pragma GCC poison LIBGCC2_DOUBLE_TYPE_SIZE
|
#pragma GCC poison LIBGCC2_DOUBLE_TYPE_SIZE LIBGCC2_WORDS_BIG_ENDIAN
|
||||||
|
|
||||||
/* Miscellaneous macros that are no longer used. */
|
/* Miscellaneous macros that are no longer used. */
|
||||||
#pragma GCC poison USE_MAPPED_LOCATION
|
#pragma GCC poison USE_MAPPED_LOCATION
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2010-10-23 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* dconfig.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
|
||||||
|
(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
|
||||||
|
|
||||||
2010-09-10 Kai Tietz <kai.tietz@onevision.com>
|
2010-09-10 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* configure: Regenerated.
|
* configure: Regenerated.
|
||||||
|
|
|
@ -28,12 +28,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
#include "coretypes.h"
|
#include "coretypes.h"
|
||||||
#include "tm.h"
|
#include "tm.h"
|
||||||
|
|
||||||
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
||||||
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
|
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN \
|
||||||
|
(__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
#if LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2010-10-23 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
|
* config/libbid/bid_gcc_intrinsics.h (LIBGCC2_WORDS_BIG_ENDIAN):
|
||||||
|
Delete.
|
||||||
|
(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
|
||||||
|
|
||||||
2010-10-14 Nathan Froyd <froydnj@codesourcery.com>
|
2010-10-14 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
* config/arm/bpabi.h: New file.
|
* config/arm/bpabi.h: New file.
|
||||||
|
|
|
@ -30,12 +30,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
#include "coretypes.h"
|
#include "coretypes.h"
|
||||||
#include "tm.h"
|
#include "tm.h"
|
||||||
|
|
||||||
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
|
|
||||||
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
|
||||||
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
|
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN \
|
||||||
|
(__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
||||||
|
|
Loading…
Reference in New Issue