diff options
Diffstat (limited to 'gcc/f/target.h')
-rw-r--r-- | gcc/f/target.h | 66 |
1 files changed, 26 insertions, 40 deletions
diff --git a/gcc/f/target.h b/gcc/f/target.h index ae4c8e3e8c2..b96504f4628 100644 --- a/gcc/f/target.h +++ b/gcc/f/target.h @@ -224,7 +224,15 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define FFETARGET_f2cTYLOGICAL2 13 #define FFETARGET_f2cTYQUAD 14 -#if !defined(__alpha__) && (!defined (_ARCH_PPC) || !defined (__64BIT__)) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__))) && (!defined(__ia64__) || !defined(__LP64__)) && (!defined(__hppa__) || !defined(__LP64__)) && !defined(__s390x__) && !defined(__x86_64__) +#if (!defined(__alpha__) \ + && (!defined(__hppa__) || !defined(__LP64__)) \ + && (!defined(__ia64__) || !defined(__LP64__)) \ + && !defined(__MMIX__) \ + && (!defined (_ARCH_PPC) || !defined (__64BIT__)) \ + && !defined(__powerpc64__) \ + && !defined(__s390x__) \ + && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))\ + && !defined(__x86_64__)) #define FFETARGET_32bit_longs #endif @@ -323,54 +331,30 @@ typedef ? ffetargetLogical8; ? #endif #if FFETARGET_okREAL1 -#ifdef FFETARGET_32bit_longs -typedef long int ffetargetReal1; -#define ffetargetReal1_f "l" -#define ffetarget_cvt_r1_to_rv_ REAL_VALUE_UNTO_TARGET_SINGLE -#define ffetarget_cvt_rv_to_r1_ REAL_VALUE_TO_TARGET_SINGLE -#else typedef int ffetargetReal1; #define ffetargetReal1_f "" -#define ffetarget_cvt_r1_to_rv_(in) \ - ({ REAL_VALUE_TYPE _rv; \ - _rv = REAL_VALUE_UNTO_TARGET_SINGLE ((long) (in)); \ +#define ffetarget_cvt_r1_to_rv_(in) \ + ({ REAL_VALUE_TYPE _rv; \ + long _in = (in); \ + real_from_target (&_rv, &_in, mode_for_size (32, MODE_FLOAT, 0)); \ _rv; }) #define ffetarget_cvt_rv_to_r1_(in, out) \ ({ long _tmp; \ REAL_VALUE_TO_TARGET_SINGLE ((in), _tmp); \ (out) = (ffetargetReal1) _tmp; }) #endif -#endif #if FFETARGET_okREAL2 -#ifdef FFETARGET_32bit_longs -typedef struct - { - long int v[2]; - } -ffetargetReal2; -#define ffetargetReal2_f "l" -#define ffetarget_cvt_r2_to_rv_ REAL_VALUE_UNTO_TARGET_DOUBLE -#define ffetarget_cvt_rv_to_r2_ REAL_VALUE_TO_TARGET_DOUBLE -#else -typedef struct - { - int v[2]; - } -ffetargetReal2; +typedef struct { int v[2]; } ffetargetReal2; #define ffetargetReal2_f "" -#define ffetarget_cvt_r2_to_rv_(in) \ - ({ REAL_VALUE_TYPE _rv; \ - long _tmp[2]; \ - _tmp[0] = (in)[0]; \ - _tmp[1] = (in)[1]; \ - _rv = REAL_VALUE_UNTO_TARGET_DOUBLE (_tmp); \ +#define ffetarget_cvt_r2_to_rv_(in) \ + ({ REAL_VALUE_TYPE _rv; long _tmp[2]; \ + _tmp[0] = (in)[0]; _tmp[1] = (in)[1]; \ + real_from_target (&_rv, _tmp, mode_for_size (64, MODE_FLOAT, 0)); \ _rv; }) -#define ffetarget_cvt_rv_to_r2_(in, out) \ - ({ long _tmp[2]; \ - REAL_VALUE_TO_TARGET_DOUBLE ((in), _tmp); \ - (out)[0] = (int) (_tmp[0]); \ - (out)[1] = (int) (_tmp[1]); }) -#endif +#define ffetarget_cvt_rv_to_r2_(in, out) \ + ({ long _tmp[2]; \ + REAL_VALUE_TO_TARGET_DOUBLE ((in), _tmp); \ + (out)[0] = (int)_tmp[0]; (out)[1] = (int)_tmp[1]; }) #endif #if FFETARGET_okREAL3 typedef long ffetargetReal3[?]; @@ -1485,13 +1469,15 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len); #define ffetarget_print_real1(f,l) \ ({ REAL_VALUE_TYPE lr; \ lr = ffetarget_cvt_r1_to_rv_ ((l)); \ - REAL_VALUE_TO_DECIMAL (lr, bad_fmt_val??, ffetarget_string_); \ + real_to_decimal (ffetarget_string_, &lr \ + sizeof(ffetarget_string_), 0, 1); \ fputs (ffetarget_string_, (f)); \ }) #define ffetarget_print_real2(f,l) \ ({ REAL_VALUE_TYPE lr; \ lr = ffetarget_cvt_r2_to_rv_ (&((l).v[0])); \ - REAL_VALUE_TO_DECIMAL (lr, bad_fmt_val??, ffetarget_string_); \ + real_to_decimal (ffetarget_string_, &lr, \ + sizeof(ffetarget_string_), 0, 1); \ fputs (ffetarget_string_, (f)); \ }) #define ffetarget_real1_one(res) ffetarget_cvt_rv_to_r1_ (dconst1, *(res)) |