re PR fortran/81160 (arith.c:2009: bad statement order ?)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sat, 24 Jun 2017 21:22:08 +0000 (21:22 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sat, 24 Jun 2017 21:22:08 +0000 (21:22 +0000)
2017-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/81160
* arith.c (wprecision_int_real): Set return value before
mpz_clear and then return after it.

From-SVN: r249627

gcc/fortran/ChangeLog
gcc/fortran/arith.c

index 8e9e9a66d620fdbf933f91489c1f93e2cb366da3..88fd0b327d7cc2d5310a9c770e81f2705ffc4b40 100644 (file)
@@ -1,3 +1,9 @@
+2017-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/81160
+       * arith.c (wprecision_int_real): Set return value before
+       mpz_clear and then return after it.
+
 2017-06-15  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/80983
index 8fa305c6aee2a915ed00cbb35ed17411abce1f04..c3be14df522d1d4cbf3e07881f5618154b15fb44 100644 (file)
@@ -2001,13 +2001,14 @@ wprecision_real_real (mpfr_t r, int from_kind, int to_kind)
 static bool
 wprecision_int_real (mpz_t n, mpfr_t r)
 {
+  bool ret;
   mpz_t i;
   mpz_init (i);
   mpfr_get_z (i, r, GFC_RND_MODE);
   mpz_sub (i, i, n);
-  return mpz_cmp_si (i, 0) != 0;
+  ret = mpz_cmp_si (i, 0) != 0;
   mpz_clear (i);
-
+  return ret;
 }
 
 /* Convert integers to integers.  */