On Fri, 11 Jan 2008, Vincent Lefevre wrote:

> > ==14240==    at 0x4A059F6: malloc (vg_replace_malloc.c:149)
> > ==14240==    by 0xB2F778: __gmp_default_allocate (in 
> > /mnt/sdb2/obj43/gcc/f951)
> > ==14240==    by 0x4C2B62D: mpfr_init2 (init2.c:53)
> > ==14240==    by 0x4C34424: mpfr_cache (cache.c:57)
> > ==14240==    by 0x4C18E48: mpfr_log (log.c:133)
> > ==14240==    by 0x4C2A4D1: mpfr_log10 (log10.c:111)
> > ==14240==    by 0x40A29F: gfc_arith_init_1 (arith.c:165)
> > ==14240==    by 0x443BC2: gfc_init_1 (misc.c:259)
> > ==14240==    by 0x47684D: gfc_init (f95-lang.c:288)
> > ==14240==    by 0x6D74F4: toplev_main (toplev.c:2128)
> > ==14240==    by 0x3B7EC1E073: (below main) (in /lib64/libc-2.7.so)
>
> I'd say that this is a "bug" in GCC, that doesn't call mpfr_free_cache()
> before exiting. Now, this isn't really necessary in practice since the
> memory will be freed anyway.



Jerry - does this fix it?

                --Kaveh


2008-01-16  Kaveh R. Ghazi  <[EMAIL PROTECTED]>

        * toplev.c (toplev_main): Call mpfr_free_cache().

diff -rup orig/egcc-SVN20080116/gcc/toplev.c egcc-SVN20080116/gcc/toplev.c
--- orig/egcc-SVN20080116/gcc/toplev.c  2008-01-03 23:37:34.000000000 +0100
+++ egcc-SVN20080116/gcc/toplev.c       2008-01-16 06:13:24.000000000 +0100
@@ -2276,6 +2276,8 @@ toplev_main (unsigned int argc, const ch
   if (!exit_after_options)
     do_compile ();

+  mpfr_free_cache ();
+
   if (errorcount || sorrycount)
     return (FATAL_EXIT_CODE);

Reply via email to