diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-07-14 21:44:46 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-07-14 21:44:46 +0000 |
commit | ff7097f21e538fc38bf22e30acfbea74433fb2b4 (patch) | |
tree | be0c833ab43339dfe5bcb5d62d90379dd934ef43 /gcc | |
parent | 6e5ad0f92c3e5b4f8c3fcf5a67265874beda1040 (diff) | |
download | gcc-ff7097f21e538fc38bf22e30acfbea74433fb2b4.zip gcc-ff7097f21e538fc38bf22e30acfbea74433fb2b4.tar.gz gcc-ff7097f21e538fc38bf22e30acfbea74433fb2b4.tar.bz2 |
simplify.c (gfc_simplify_floor): Set precision of temporary to that of arg.
2015-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
* simplify.c (gfc_simplify_floor): Set precision of temporary to
that of arg.
2015-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
gfortran.dg/pr66864.f90: New test.
From-SVN: r225790
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr66864.f90 | 16 |
4 files changed, 26 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0a2734b..b13f67f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2015-07-14 Steven G. Kargl <kargl@gcc.gnu.org> + + * simplify.c (gfc_simplify_floor): Set precision of temporary to + that of arg. + 2015-07-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/64589 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index bc3ec3f..3fb9887 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -2351,9 +2351,7 @@ gfc_simplify_floor (gfc_expr *e, gfc_expr *k) if (e->expr_type != EXPR_CONSTANT) return NULL; - gfc_set_model_kind (kind); - - mpfr_init (floor); + mpfr_init2 (floor, mpfr_get_prec (e->value.real)); mpfr_floor (floor, e->value.real); result = gfc_get_constant_expr (BT_INTEGER, kind, &e->where); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 45df0cc..801e462 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-07-14 Steven G. Kargl <kargl@gcc.gnu.org> + + gfortran.dg/pr66864.f90: New test. + 2015-07-14 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/66626 diff --git a/gcc/testsuite/gfortran.dg/pr66864.f90 b/gcc/testsuite/gfortran.dg/pr66864.f90 new file mode 100644 index 0000000..ebea99b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr66864.f90 @@ -0,0 +1,16 @@ +! { dg-do run } +! PR fortran/66864 +! +program t + implicit none + real(8) x + x = 2.0d0**26.5d0 + if (floor(x) /= 94906265) call abort + if (floor(2.0d0**26.5d0)/= 94906265) call abort + x = 777666555.6d0 + if (floor(x) /= 777666555) call abort + if (floor(777666555.6d0) /= 777666555) call abort + x = 2000111222.6d0 + if (floor(x) /= 2000111222) call abort + if (floor(2000111222.6d0) /= 2000111222) call abort +end program t |