On 1/11/21 5:55 PM, Jan Hubicka wrote:
The patch is about not using delete for a memory that
is allocated by GGC.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

gcc/ChangeLog:

        PR jit/98615
        * symtab-clones.h (clone_info::release): Release
        symtab::m_clones with ggc_delete as it's a GGC memory.

OK, so this does not cause regular crashes because it is run only with
JIT? Sorry for that.

Yep :)


I was thinking of making the finalizers to be run also with checking
enabled - that should catch such errors soner.

Be my quest. May I install the suggested patch after testing?

Thanks,
Martin


Honza
---
  gcc/symtab-clones.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/symtab-clones.h b/gcc/symtab-clones.h
index cdb19cb6c8c..5695a434f6a 100644
--- a/gcc/symtab-clones.h
+++ b/gcc/symtab-clones.h
@@ -83,7 +83,7 @@ inline void
  clone_info::release ()
  {
    if (symtab->m_clones)
-    delete (symtab->m_clones);
+    ggc_delete (symtab->m_clones);
    symtab->m_clones = NULL;
  }
--
2.29.2


>From 8e9e59c2636f1802951a983c603af15fd46c5106 Mon Sep 17 00:00:00 2001
From: Martin Liska <mli...@suse.cz>
Date: Mon, 11 Jan 2021 18:12:54 +0100
Subject: [PATCH] Call toplev::finalize in CHECKING_P mode.

gcc/ChangeLog:

	PR jit/98615
	* main.c (main): Call toplev::finalize in CHECKING_P mode.
---
 gcc/main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/main.c b/gcc/main.c
index ab0244b1851..093e63954f8 100644
--- a/gcc/main.c
+++ b/gcc/main.c
@@ -36,5 +36,10 @@ main (int argc, char **argv)
   toplev toplev (NULL, /* external_timer */
 		 true /* init_signals */);
 
-  return toplev.main (argc, argv);
+  int r = toplev.main (argc, argv);
+#if CHECKING_P
+  toplev.finalize ();
+#endif
+
+  return r;
 }
-- 
2.29.2

Reply via email to