diff options
author | Alan Modra <amodra@bigpond.net.au> | 2006-03-31 00:27:51 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2006-03-31 10:57:51 +1030 |
commit | d3603e8c4ef5a3fb3f21a5378b2515e81c417450 (patch) | |
tree | 19b2814f91d5e30db2f858c3e704a3bfe76851d0 /gcc | |
parent | 82107c9b290b3e5c9046002e58becf91bee55153 (diff) | |
download | gcc-d3603e8c4ef5a3fb3f21a5378b2515e81c417450.zip gcc-d3603e8c4ef5a3fb3f21a5378b2515e81c417450.tar.gz gcc-d3603e8c4ef5a3fb3f21a5378b2515e81c417450.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 21 |
2 files changed, 23 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c38801f..43acab7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-03-31 Alan Modra <amodra@bigpond.net.au> + + * 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 <geoffk@apple.com> * 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 aeecdfe..9d303c0 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"); } |