From: Alan Modra Date: Fri, 31 Mar 2006 00:27:51 +0000 (+0000) Subject: rs6000.c (rs6000_explicit_options): Add ieee. X-Git-Tag: releases/gcc-4.2.0~3480 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d3603e8c4ef5a3fb3f21a5378b2515e81c417450;p=thirdparty%2Fgcc.git rs6000.c (rs6000_explicit_options): Add ieee. * config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee. (rs6000_override_options): Use it. (rs6000_handle_option): Set it. Set rs6000_explicit_options.abi only for -mabi=spe/no-spe and -mabi=altivec. From-SVN: r112555 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c38801f7046f..43acab710a13 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-03-31 Alan Modra + + * config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee. + (rs6000_override_options): Use it. + (rs6000_handle_option): Set it. Set rs6000_explicit_options.abi + only for -mabi=spe/no-spe and -mabi=altivec. + 2006-03-30 Geoffrey Keating * config/darwin.h (LINK_COMMAND_SPEC): Don't try to protect %S with diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index aeecdfe7ce2b..9d303c0a97b7 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -249,11 +249,12 @@ int rs6000_alignment_flags; struct { bool aix_struct_ret; /* True if -maix-struct-ret was used. */ bool alignment; /* True if -malign- was used. */ - bool abi; /* True if -mabi= was used. */ + bool abi; /* True if -mabi=spe/nospe was used. */ bool spe; /* True if -mspe= was used. */ bool float_gprs; /* True if -mfloat-gprs= was used. */ bool isel; /* True if -misel was used. */ bool long_double; /* True if -mlong-double- was used. */ + bool ieee; /* True if -mabi=ieee/ibmlongdouble used. */ } rs6000_explicit_options; struct builtin_description @@ -1322,7 +1323,7 @@ rs6000_override_options (const char *default_cpu) rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE; #ifndef POWERPC_LINUX - if (!rs6000_explicit_options.abi) + if (!rs6000_explicit_options.ieee) rs6000_ieeequad = 1; #endif @@ -1777,23 +1778,31 @@ rs6000_handle_option (size_t code, const char *arg, int value) #endif case OPT_mabi_: - rs6000_explicit_options.abi = true; if (!strcmp (arg, "altivec")) { + rs6000_explicit_options.abi = true; rs6000_altivec_abi = 1; rs6000_spe_abi = 0; } else if (! strcmp (arg, "no-altivec")) - rs6000_altivec_abi = 0; + { + /* ??? Don't set rs6000_explicit_options.abi here, to allow + the default for rs6000_spe_abi to be chosen later. */ + rs6000_altivec_abi = 0; + } else if (! strcmp (arg, "spe")) { + rs6000_explicit_options.abi = true; rs6000_spe_abi = 1; rs6000_altivec_abi = 0; if (!TARGET_SPE_ABI) error ("not configured for ABI: '%s'", arg); } else if (! strcmp (arg, "no-spe")) - rs6000_spe_abi = 0; + { + rs6000_explicit_options.abi = true; + rs6000_spe_abi = 0; + } /* These are here for testing during development only, do not document in the manual please. */ @@ -1810,11 +1819,13 @@ rs6000_handle_option (size_t code, const char *arg, int value) else if (! strcmp (arg, "ibmlongdouble")) { + rs6000_explicit_options.ieee = true; rs6000_ieeequad = 0; warning (0, "Using IBM extended precision long double"); } else if (! strcmp (arg, "ieeelongdouble")) { + rs6000_explicit_options.ieee = true; rs6000_ieeequad = 1; warning (0, "Using IEEE extended precision long double"); }