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