diff options
Diffstat (limited to 'gcc-4.7/gcc/config/i386/i386.c')
| -rw-r--r-- | gcc-4.7/gcc/config/i386/i386.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc-4.7/gcc/config/i386/i386.c b/gcc-4.7/gcc/config/i386/i386.c index c2c6cd02c..adf911c64 100644 --- a/gcc-4.7/gcc/config/i386/i386.c +++ b/gcc-4.7/gcc/config/i386/i386.c @@ -2692,6 +2692,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch, static struct ix86_target_opts flag_opts[] = { { "-m128bit-long-double", MASK_128BIT_LONG_DOUBLE }, + { "-mlong-double-64", MASK_LONG_DOUBLE_64 }, { "-m80387", MASK_80387 }, { "-maccumulate-outgoing-args", MASK_ACCUMULATE_OUTGOING_ARGS }, { "-malign-double", MASK_ALIGN_DOUBLE }, @@ -3802,6 +3803,11 @@ ix86_option_override_internal (bool main_args_p) #endif } + /* Default long double to 64-bit for Bionic. */ + if (TARGET_HAS_BIONIC + && !(target_flags_explicit & MASK_LONG_DOUBLE_64)) + target_flags |= MASK_LONG_DOUBLE_64; + if (TARGET_AVX) { /* When not optimize for size, enable vzeroupper optimization for @@ -20479,7 +20485,9 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode) parts[2] = gen_int_mode (l[2], SImode); break; case XFmode: - REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l); + /* We can't use REAL_VALUE_TO_TARGET_LONG_DOUBLE since + long double may not be 80-bit. */ + real_to_target (l, &r, mode); parts[2] = gen_int_mode (l[2], SImode); break; case DFmode: |
