Fix memory leaks in gimple-ssa-sprintf.c (PR tree-optimization/79339).
authorMartin Liska <mliska@suse.cz>
Fri, 3 Feb 2017 08:20:57 +0000 (09:20 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 3 Feb 2017 08:20:57 +0000 (08:20 +0000)
2017-02-03  Martin Liska  <mliska@suse.cz>

PR tree-optimization/79339
* gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
(format_floating): Likewise.

From-SVN: r245146

gcc/ChangeLog
gcc/gimple-ssa-sprintf.c

index 1d8bf2b4339bb912ed9ae77ed13e1754baf9cb74..2118c33971113a2c33bcd1ac2da3c27a682b117b 100644 (file)
@@ -1,3 +1,9 @@
+2017-02-03  Martin Liska  <mliska@suse.cz>
+
+       PR tree-optimization/79339
+       * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
+       (format_floating): Likewise.
+
 2017-02-03  Martin Liska  <mliska@suse.cz>
 
        PR ipa/79337
index 9e099f0a1330de9e8db1c195374cb48e691310bc..10c6d8e97198836ebab86aca6a1b51decaace5f9 100644 (file)
@@ -1501,7 +1501,10 @@ format_floating_max (tree type, char spec, HOST_WIDE_INT prec)
   mpfr_from_real (x, &rv, GMP_RNDN);
 
   /* Return a value one greater to account for the leading minus sign.  */
-  return 1 + get_mpfr_format_length (x, "", prec, spec, 'D');
+  unsigned HOST_WIDE_INT r
+    = 1 + get_mpfr_format_length (x, "", prec, spec, 'D');
+  mpfr_clear (x);
+  return r;
 }
 
 /* Return a range representing the minimum and maximum number of bytes
@@ -1739,6 +1742,7 @@ format_floating (const directive &dir, tree arg)
           of the result struct.  */
        *minmax[i] = get_mpfr_format_length (mpfrval, fmtstr, prec[i],
                                             dir.specifier, rndspec);
+       mpfr_clear (mpfrval);
       }
   }