From: Jason Thorpe Date: Thu, 5 Sep 2002 16:45:24 +0000 (+0000) Subject: real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is not a compile-time constant... X-Git-Tag: releases/gcc-3.3.0~3010 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3717da940a1fd923eb39014ca383877a25f8abd9;p=thirdparty%2Fgcc.git real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is not a compile-time constant for... * real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is not a compile-time constant for the non-IBM case. * config/arm/arm-protos.h (arm_float_words_big_endian): New prototype. * config/arm/arm.c (arm_float_words_big_endian): New function. (TARGET_CPU_CPP_BUILTINS): Define __VFP_FP__ if TARGET_VFP and not TARGET_HARD_FLOAT. (ARM_FLAG_VFP, TARGET_VFP): Define. (FLOAT_WORDS_BIG_ENDIAN): Use arm_float_words_big_endian. From-SVN: r56854 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ae0247fdaf8c..962752f940e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2002-09-05 Jason Thorpe + + * real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is + not a compile-time constant for the non-IBM case. + * config/arm/arm-protos.h (arm_float_words_big_endian): New + prototype. + * config/arm/arm.c (arm_float_words_big_endian): New function. + (TARGET_CPU_CPP_BUILTINS): Define __VFP_FP__ if TARGET_VFP + and not TARGET_HARD_FLOAT. + (ARM_FLAG_VFP, TARGET_VFP): Define. + (FLOAT_WORDS_BIG_ENDIAN): Use arm_float_words_big_endian. + 2002-09-05 David Edelsohn * doc/install.texi: Correct text of s390-*-linux* and s390x-*-linux* diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 6aaa1307857c..dbd950616c29 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -153,6 +153,8 @@ extern void common_section PARAMS ((void)); #endif /* RTX_CODE */ +extern int arm_float_words_big_endian PARAMS ((void)); + /* Thumb functions. */ extern void arm_init_expanders PARAMS ((void)); extern int thumb_far_jump_used_p PARAMS ((int)); diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 9000cca326b4..336f1821bd27 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1845,6 +1845,27 @@ arm_return_in_memory (type) return 1; } +/* Indicate whether or not words of a double are in big-endian order. */ + +int +arm_float_words_big_endian () +{ + + /* For FPA, float words are always big-endian. For VFP, floats words + follow the memory system mode. */ + + if (TARGET_HARD_FLOAT) + { + /* FIXME: TARGET_HARD_FLOAT currently implies FPA. */ + return 1; + } + + if (TARGET_VFP) + return (TARGET_BIG_END ? 1 : 0); + + return 1; +} + /* Initialize a variable CUM of type CUMULATIVE_ARGS for a call to a function whose data type is FNTYPE. For a library call, FNTYPE is NULL. */ diff --git a/gcc/real.c b/gcc/real.c index 077e313f3490..0a94c0599e52 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -141,10 +141,12 @@ unknown arithmetic type #define VAX_HALFWORD_ORDER 1 #endif #else -#if defined(IBM) && !REAL_WORDS_BIG_ENDIAN +#if defined(IBM) +#if !REAL_WORDS_BIG_ENDIAN #error "Little-endian representations are not supported for IBM." #endif #endif +#endif #if defined(DEC) && !defined (TARGET_G_FLOAT) #define TARGET_G_FLOAT 0