From c83c7e7e47f2a1618ea5ab1e6fc78df66b22f285 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 2 Sep 2008 20:46:29 +0200 Subject: [PATCH] re PR testsuite/36332 (FAIL: gcc.dg/torture/type-generic-1.c execution test on powerpc-*) PR target/36332 * real.c (real_maxval): Clear a lower bit to make real_maxval match get_max_float for IBM long double format. * gcc.c-torture/execute/ieee/pr36332.c: New test. From-SVN: r139906 --- gcc/ChangeLog | 6 ++++++ gcc/real.c | 2 +- gcc/testsuite/ChangeLog | 3 +++ .../gcc.c-torture/execute/ieee/pr36332.c | 15 +++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/ieee/pr36332.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0179e92f0d52..670d5f3ba5b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-09-02 Jakub Jelinek + + PR target/36332 + * real.c (real_maxval): Clear a lower bit to make real_maxval + match get_max_float for IBM long double format. + 2008-09-02 Andreas Schwab * configure.ac: Use m4_quote to quote the expansion of m4_do. diff --git a/gcc/real.c b/gcc/real.c index 886f8b4ae2c0..dc6d7483e998 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -2417,7 +2417,7 @@ real_maxval (REAL_VALUE_TYPE *r, int sign, enum machine_mode mode) required to be the value of the long double rounded to the nearest double. Rounding means we need a slightly smaller value for LDBL_MAX. */ - clear_significand_bit (r, SIGNIFICAND_BITS - fmt->pnan); + clear_significand_bit (r, SIGNIFICAND_BITS - fmt->pnan - 1); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b30e34518d23..f9fdc55a00a2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-09-02 Jakub Jelinek + PR target/36332 + * gcc.c-torture/execute/ieee/pr36332.c: New test. + PR c/37171 * g++.dg/ext/attrib34.C: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/pr36332.c b/gcc/testsuite/gcc.c-torture/execute/ieee/pr36332.c new file mode 100644 index 000000000000..b22fd5d5f740 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/pr36332.c @@ -0,0 +1,15 @@ +/* PR target/36332 */ + +int __attribute__((noinline, used)) +foo (long double ld) +{ + return ld == __builtin_infl (); +} + +int +main () +{ + if (foo (__LDBL_MAX__)) + __builtin_abort (); + return 0; +} -- 2.47.3