From a9ab39d3b4528fb63e91260369d7a8103a5a745e Mon Sep 17 00:00:00 2001 From: Janis Johnson Date: Tue, 22 Sep 2009 16:39:35 +0000 Subject: [PATCH] i386.c (ix86_scalar_mode_supported_p): Don't return unconditional true for decimal float modes. * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return unconditional true for decimal float modes. * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto. * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto. * lib/target-supports.exp (check_effective_target_dfp_nocache): Check support via mode instead of C type. (check_effective_target_dfprt_nocache): Ditto. (check_effective_target_hard_dfp): Ditto. From-SVN: r152030 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 2 +- gcc/config/rs6000/rs6000.c | 2 +- gcc/config/s390/s390.c | 2 +- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/lib/target-supports.exp | 8 +++++--- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c32bf1bd6ec..36ecde8bda1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-09-22 Janis Johnson + + * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return + unconditional true for decimal float modes. + * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto. + * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto. + 2009-09-22 Loren J. Rittle * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index bda1c5f3507..7c215420666 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -28066,7 +28066,7 @@ static bool ix86_scalar_mode_supported_p (enum machine_mode mode) { if (DECIMAL_FLOAT_MODE_P (mode)) - return true; + return default_decimal_float_supported_p (); else if (mode == TFmode) return true; else diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a4b59c6208c..83d9ee84518 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -25403,7 +25403,7 @@ static bool rs6000_scalar_mode_supported_p (enum machine_mode mode) { if (DECIMAL_FLOAT_MODE_P (mode)) - return true; + return default_decimal_float_supported_p (); else return default_scalar_mode_supported_p (mode); } diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 7054e45fc71..e439b01709f 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -366,7 +366,7 @@ static bool s390_scalar_mode_supported_p (enum machine_mode mode) { if (DECIMAL_FLOAT_MODE_P (mode)) - return true; + return default_decimal_float_supported_p (); else return default_scalar_mode_supported_p (mode); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 981e8e3833a..6db9d35b01c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-09-22 Janis Johnson + + * lib/target-supports.exp (check_effective_target_dfp_nocache): + Check support via mode instead of C type. + (check_effective_target_dfprt_nocache): Ditto. + (check_effective_target_hard_dfp): Ditto. + 2009-09-22 Richard Guenther PR middle-end/41395 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 918993830e8..0e29668c94e 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1295,7 +1295,7 @@ proc check_effective_target_fixed_point { } { proc check_effective_target_dfp_nocache { } { verbose "check_effective_target_dfp_nocache: compiling source" 2 set ret [check_no_compiler_messages_nocache dfp object { - _Decimal32 x; _Decimal64 y; _Decimal128 z; + float x __attribute__((mode(DD))); }] verbose "check_effective_target_dfp_nocache: returning $ret" 2 return $ret @@ -1303,7 +1303,8 @@ proc check_effective_target_dfp_nocache { } { proc check_effective_target_dfprt_nocache { } { return [check_runtime_nocache dfprt { - _Decimal32 x = 1.2df; _Decimal64 y = 2.3dd; _Decimal128 z; + typedef float d64 __attribute__((mode(DD))); + d64 x = 1.2df; y = 2.3dd; z; int main () { z = x + y; return 0; } }] } @@ -3069,7 +3070,8 @@ proc check_effective_target_pow10 { } { proc check_effective_target_hard_dfp {} { return [check_no_messages_and_pattern hard_dfp "!adddd3" assembly { - _Decimal64 x, y, z; + typedef float d64 __attribute__((mode(DD))); + d64 x, y, z; void foo (void) { z = x + y; } }] }